Industrial IT Management and supervision Process Control

Manage Risks, avoid the cape

I’m Jason Firth.

On Sunday evening, this very website you’re reading this post from went down. In fact, it was a critical emergency because not only did the server’s main drive fail, but there were no backups, we had no parts on hand, and no plan to recover even if there was a backup.

Have no fear, Nerdyman is here! To put on the cape and save the day!

First thing in the morning, I went out and grabbed a replacement drive from the store, and I was able to limp the drive along long enough to make a full backup, and finally ended up figuring out how to put the full backup onto a new drive and make it boot up! Hoorah! The day is saved!

There’s a big problem.

Superheroes aren’t real. They exist in fantasy. The fact that I could run out and get parts that just happened to exist in a store somewhere, the fact that I just happened to figure out how to get my data back, the fact that I just happened to figure out how to get the system back up with the backup data and do it in time that I could get it done was all pure luck.

Let’s say this wasn’t a personal webserver with pictures of nerdy superheroes on it, but a business critical server. It was 24 hours from failure to recovery. For a personal webserver with pictures of nerdy superheroes on it, that’s pretty decent turnover time, but for a business critical application that’s totally unacceptable, especially given that successfully repairing the server was not a given.

In a business environment, you need to manage your risks. This is going to mean a few things: First, taking an inventory of every device you’re responsible for. Second, asking “What happens if this fails?”. Third, asking “How do I repair this when it does fail?”, and finally asking “Do I have the hardware, backups, and recovery procedures in place so we can get this back up and running reliably and quickly?”, and finally coming up with a plan to make sure you have the hardware, backups, and recovery procedures in place for everything you discovered in your audit.

When you manage your risks like that, there is no such thing as having to put on a cape, because you don’t need to make a miracle happen — you just need to follow your plan.

So what should I do for the future? To start with, I should have a spare drive on hand (and perhaps even a full spare computer if this is really critical). Next, I should have 3 copies of my data: The data itself, the online backup, and the offline (off-site if you’re really paranoid) backup. Third, I should have procedures in place to restore the backups in the event I need to (it’s occurred in the past that backups were made for a machine but the backups could only be used on that exact hardware, so massive amounts of time and effort were used to put the cape on and make the backups operate on hardware it should never have operated on). Finally, I should be testing my procedures occasionally to ensure they are relevant and reviewing my site-wide audit regularly.

One of the interesting things about proper risk management is it not only affects things directly that come from the document, but the process of asking these questions will change the way you do things. You’ve gone through everything you have, and inconsistencies become clear, and the consequences of cutting corners become more obvious.

Risk management is an extremely boring task. It means sitting down perhaps for weeks or months and spending a lot of time asking the same questions over and over again, but it pays off the first time you’re ready.

So I’ve been talking about IT infrastructure, but consider this: What I’ve said can correspond to all the equipment you’re responsible for. If you’re responsible for an instrument, shouldn’t you have a spare part, backup configuration, the tools you’ll need, and a procedure for repairing it if need be?

Doing this risk management totally changes the character of daily maintenance. Doing the work up-front means that when something happens, you put the cape away and just get about doing the work you need to do (and if you’re a supervisor or a manager, it means your workers put the cape away and get about doing the work they need to do). It costs less in the long run because you aren’t rushing parts in. It lowers mean time to repair because all the legwork is already done. It means less downtime because you don’t need to rush in parts, figure out how to do things on the fly that have never been done before, or figure out how to deal with your lost data in the middle of a crisis.

Thanks for reading!

Engineering Technology Industrial IT Management and supervision Process Control Trades

Work From Home does NOT mean Work 3 jobs.

During the pandemic, a certain practice ended up being written of in national media and became a topic of discussion, though I don’t know how prevalent it became in fact. This was the practice of working several jobs from home. In particular, I’ve heard about it quite a bit from IT people.

The individuals who took these jobs were accepting pay by the hour, but then would take several of these positions at once.

There are a number of rationalizations, including that as long as that job duties are getting done, It isn’t really your employer’s business whether you have another job during the same hours they are paying you for, the need for financial security, the lack of opportunities, the exploitation by employers, and the autonomy of workers.

I’ll say, in an age of high inflation, high cost of living, and relatively wages compared to productivity, I can relate. I understand why people would think that this is a just thing to do.

But here’s the thing: It’s not just, it’s not ethical, it’s not moral,it’s not legal. Don’t do it. (Don’t worry, I’ll tell you how you can do it ethically and morally and legally at the end)

The argument of “As long as job duties are getting done, it isn’t really your employers business whether you have another job” makes a lot of assumptions that aren’t necessarily valid. Just because you are getting paid at a job and you haven’t been fired yet does not mean you’re doing perfectly fine and everything is okay. Labor law makes certain assumptions about the employer employee relationship and as such a Grant’s additional protections that someone doing peace mill work wouldn’t have. It’s often very difficult to fire an underperforming worker, and so management will keep them on even though they’re not particularly happy with the job they’re doing. They may even tell the employee that everything is just fine. In that case, they’re not doing it because the employee is hitting all of his targets and everything is fine, they’re doing it because the cost and effort involved in trying to get rid of a bad employee is so high it’s easier to just deal with an underperforming team member. At that point, then you have that underperforming team member go off and work three other jobs because they are under the impression that they are a Superstar who hits all their targets. In reality, that worker is just taking advantage of both sides of the equation, working like a subcontractor well accepting the benefits of full-time employment and the protections therein.

When an employer is paying you for that hour, it is your employer’s business what you’re doing. The moment that you accept payment for that hour of your time, it is no longer your time, it’s their time to do with as they will within reason.

One can make the argument for financial security, but I don’t really feel like that’s an ethical argument as much as a practical one. Of course we all want to make more money, and if there’s a way to make more money then you’re making more money, but that isn’t a moral or ethical argument. Robbing old people is another way you could make more money and be more financially secure, but most people would agree that robbing old people isn’t moral or ethical. For something such as a highly paid information technology position, there are lots of people who end up trying to make it without highly paid information technology positions, and while it may be a struggle they do successfully accomplish it. Moreover if you are taking two or three full-time jobs, then that means one or two other people who also need to make ends meet suddenly can’t get those positions because someone else has them.

Complaining about a lack of opportunities while taking up several opportunities just seems hypocritical to me. Several people could have taken up those jobs, and instead one person is going to do a half-ass job at a bunch of them. Again, this isn’t an ethical argument, it’s a practical one.

There’s an argument that workers are being exploited and therefore the workers should exploit right back. This isn’t the sort of argument that we want to be making. The company is paying you have all the power in the world to make everyone’s life a lot worse because a minority of people are trying to scam them. A race to the bottom is not good. If you feel like you’re being exploited, then it’s time to take measures to stop being exploited, that doesn’t justify exploiting others. Moreover, if it becomes common practice for workers to be working several jobs at once, this doesn’t actually make the workers less exploited. Effectively, it will artificially drive up the supply of labor, meaning that companies won’t have to compete as hard for workers, meaning that the labor market will become more exploitative. As well, the people who are working two or three jobs won’t need to be making enough money to survive because they’ve got two or three jobs, meaning but the people who are doing this are effectively making it harder for people who aren’t doing this to survive on one job, again ensuring that the labor market becomes more exploitative, not less.

Finally, as I’ve already said, the autonomy of workers is a moot argument because once they are paying you for your time it is not your time to be autonomous within. The more people try to scam the systems we live in, the more those systems are going to push back and workers who are otherwise being honest are going to face less autonomy because the employers are going to feel that they can’t trust their workers if they aren’t being micromanaged.

There’s another major issue, and that’s not working from home is already considered an extremely privileged position. People who work from home don’t need to commute, they’re working conditions can be whatever they wish them to be, including listening to whatever they want on the radio, watching YouTube videos while working, even having a beer in the backyard while attending meetings as long as you don’t get caught. So you have these people who are some of the most privileged in the entire job market, and they take this privilege and they end up using it to take yet another privilege, this ability to work two or three jobs at the same time that people who are still in the office don’t get. In terms of fairness, fairness is completely out the window once we’re talking about disparities like that.

I would suspect that over time, if this became a widespread practice then it would just mean the end to work from home. Employers aren’t employing people so that they can be number three or number four on the list.

Consider a loan you take out yourself. You can take out a variable rate loan, or you can take out a fixed rate loan. If you take out a variable rate loan and rates drop, then the bank passes the savings on to you, but if rates rise, the bank passes the costs on to you. If you take out a fixed rate loan, then if rates drop the bank benefits, but if rates rise the bank takes that risk. For that reason, the bank charges a bit more for a fixed rate loan, because they’re taking on the risk of interest rates rising. The longer the rate is locked in, the larger the premium you pay because the bank is taking on more risk that interest rates rise. So imagine that you were in a situation like that, and you had a variable rate mortgage and interest rates dropped and the bank refused to register the drop in interest rates. In that case, you were spending less money so that the bank would be taking less risk but it broke the deal. How about if you had a fixed rate mortgage, and rates continue to rise, and the bank refused to honor your interest rate and just increased it because it wanted to. During the good times you had paid a premium in order to have that fixed interest rate, and they stepped in and broke the deal.

Let’s say that you were hiring someone to build a deck. And you paid them time and materials to build that deck. Let’s say that you were home for a full day, and you knew full well that they weren’t at your house building that deck, but then you saw an invoice come in for that full day of labor. Would you be okay with that? How about if you saw the crew that you were paying for at another place building someone else’s deck? How about if you found out that on that day they were charging three other people to build their decks, but only one of them actually had the crew at their house building their deck. Would you accept “I don’t know what the problem is, your deck got built didn’t it?” — I think most people would be in court and rightfully so. That company that said that they would be building your deck, that charged you to build your deck that day that wasn’t their building your deck committed fraud. Let’s say that the entire crew is just sitting there waiting for the cement truck to arrive. And you’re paying the entire crew to just sit there. That’s what they’re getting paid for. Just because they’re not doing anything doesn’t mean that they can go off and work on someone else’s deck on your dime. If they go off to work on someone else’s deck, that person can pay for the work crew..

So let’s say that you agree to a company to get paid a certain amount of money each day to be available for a certain number of hours that day to work. Whether you are productive or not you make the same amount of money. The company is taking the risk here. The hours that you are productive, they pay you. The hours that you’re completely unproductive, they pay you. If there’s nothing to do but stand around, that’s what they’re paying you to do. If you want to go work for someone else during those hours, you should turn off the payments from the one employer and turn on the payments to the other employer. Of course, that isn’t how most employment contracts work because for jobs the employer wants your time and is paying for it.

So how do you do this morley, legally, ethically, etc? It’s really straightforward. Be honest.

If you want to establish a contract with an employer where you’re going to be working for several employers, that’s something you’ll have to negotiate. You can set it up where there are certain performance guarantees they’re paying for in maintenance work such as keeping KPIs above a certain level, and if it takes less time to achieve those KPIs you come out ahead and if it takes more time to achieve those KPIs you come out behind and are likely charged a penalty. You can set it up where you’re charging by the hour, and if you’re charging another employer for an hour you don’t charge the employers you aren’t working at for the same hour. This will mean that your employer is no longer paying you a premium for the risk taken of you not being productive in a certain hour, and either you’re taking the risk that you need much more time to achieve your KPIs than you expected, or you’re taking the risk that you don’t have anything to do so you can’t charge any of your employers for your time.

If you’d prefer keeping the employers separate, then you’ll have to do something like staggering the hours so you work 8 hours at Employer A and 8 hours at Employer B. Notwithstanding any clauses in your employment contract preventing you from moonlighting, this is usually totally acceptable (but it’s also a recipe for burn-out), and you get to keep the benefits of the company taking on the risk of time you’re getting paid but not being productive for them.

This isn’t a novel problem, it only appears as such to people working in jobs who have an opportunity to deal with multiple clients at once. It’s a problem professionals have had to deal with forever. If you’re a contract lawyer or engineer working in a central office you operate independently of any particular client, you might have many clients. It’s written into the codes of conduct for these professions that you must bill fairly, and if you double bill for the same hour you’ve committed a crime and will be punished both by the law and by your professional regulator.

Let’s go back to our deck example. If you agreed at the outset to pay a fixed fee for the deck installation within a certain period of time then it doesn’t matter where the work crew is or who it’s doing work for because you’re not paying for the time the deck builders spend on your job, you’re paying for a deck and it’s their risk to make sure they do the job on time and on budget or they’ll take the hit. Otherwise, they could charge by the hour (or even by the 15 minute chunk) and meticulously ensure that only one client was being charged for time at one time. In that way, the deck builder could get paid ethically and legally. It would benefit you during times like waiting for the cement truck because someone else would be paying for the work crew at that time.

Of course, all this could get turned on its head if you manage to find some employers who are willing to pay you an hourly wage and are ok with you double charging by having multiple jobs. You’ll want to get such an unorthodox agreement in writing from all the parties involved, because it’s highly unusual and a simple verbal agreement isn’t likely to hold up in court if the employer/employee relationship goes south and they decide to sue you for breach of contract.

There’s another issue you need to be aware of: Depending on your position (and typically this only applies to high level executives or managers), you may have a fiduciary duty to the companies you work on. That means that you need to put the company’s needs above your own. In such a case, you may not be able to be employed by both a company and its competitors and meet that obligation, and that might not be something you can sign away.

These concepts apply to engineering technologists and tradesmen equally, though most tradesmen are not held to any sort of professional code of ethics, they are held to laws against fraud. It’s something to keep in mind because if unethical practices become common, there will be consequences as companies strive to protect themselves from fraud.

Management and supervision Trades

Labor is not a fungible commodity

I’m Jason Firth.

There’s a statement that I’ve said on a large number of occasions, basically that labor is not a fungible commodity.

To understand what I mean by this, first we need to go to the definition of a fungible commodity. A commodity that is fungible is a commodity that is basically interchangeable. If you buy a block of gold, you don’t really care if it was Canadian gold or us gold or Chinese gold, the gold is gold. As long as the quality is what it says it is, you’re good. There are a lot of quantities that are fungible like this. Generally speaking, oil of a certain grade is going to be fungible. Wheat could be fungible. Canola oil could be fungible. There might be specific boutique applications where you absolutely want to have a certain country or a certain companies product, but in the overwhelming majority of cases, as long as you have the product you have the product and it doesn’t really matter where it came from.

Now let’s take a look at labor. You could get 100 people, and every one of them is going to be different. Most of them probably aren’t even going to be good at the thing that you want them to be good at, but let’s pretend for a minute that of those 100 people you have 100 instrument techs. Let’s even go so far as to say that they are 100 very good instrument techs. You’re going to have 100 completely different skill sets. In a broad sense, perhaps you’re going to have some people who are better at construction, perhaps you’re going to have some people that are better at maintenance, perhaps you’re going to have some people that are better at the programming side of things, perhaps you’re going to have some people that are better at the design side of things, instrumentation and process control are such broad categories that even if you take 100 really good people you’re going to end up with 100 completely different skill sets.

This is very important for a number of reasons, but one of the biggest reasons is that you cannot plan as if labor is a fungible quantity. If you simply think that you will throw hours of work at a problem I’m afraid you’re in for a rude awakening. If for example, you give a programming job to somebody who’s an old school instrument tech, it’s very likely that that old school instrument tech is used to turning a screwdriver and pulling on a wrench and rebuilding control valves, and they might be very very good, and they are going to struggle a lot on a programming job. If by contrast, you take one of the new breed of very technical high technology instrument techs and give them a sea can full of control valves to rebuild, there’s a good chance that they’re going to struggle with that.

Besides that, the level of planning that you need for an individual may be different. There are some people where in order to properly plan a job you need to go through every step, provide every drawing, provide every data sheet, kit every single tool. On the other hand, there are other people where for the same job you can give them very little and they’re going to be more successful than if you had tried to micromanage them. Having an idea of who’s going to be doing the job when you’re planning a job is quite important.

If you are dealing with a team that you intend to be working for a long time with, there is a little bit of wiggle room. Just because your old school instrument Tech would prefer working on control valves doesn’t mean that he can’t be trained, and just because your new school technologist would prefer to be working on a computer doesn’t mean that he can’t be trained to rebuild control valves. In fact, I would argue that over a long-term this is an ideal strategy.

Regardless, it’s quite important to realize that labor is not a fungible commodity, that you can’t just throw hours at a problem and expect to have the job done the same way, that not all skill sets are the same, that planning requirements are going to be different, and that long-term training can help people who aren’t good at one thing become much better at that thing so that you can end up with a better balance team. These are all things to keep in mind.

Thanks for reading!

Site News

Another new back-end software product

I’m Jason Firth.

Well, 2021 is coming to an end, and while I haven’t updated the blog with much other than a few technical projects I’ve been working on. Part of the reason for this is that being in supervision there’s a lot of work and a lot of stuff I can’t really share, but the other major thing is just that the aging blogging software I keep using is holding me back.

In 2021, I wrote a book, got it published, created a social media network, a video hosting service, a search engine, and much more, and it really made me realize how important modern tools are. So I’ve moved to a newer platform on a highly upgraded server, and I’m hoping to get the ActivityPub plugin working.

ActivityPub is a protocol for sharing messages between websites. In my opinion, it’s our only option right now for getting away from big tech and towards a Free Internet. That’s why I’ve started to go through the pain period of making the new site and getting it all working.

Most of the old articles are on here, and in some cases I was even able to add corrupted elements that didn’t work on the old site. Obviously one problem is that they all think they were posted today, but I’m willing to take what I can get.

Looking forward to more productive writing in 2022, and now that my book is completed, I’m hoping I can focus a bit more on producing content for this blog.

Thanks for reading!

Industrial IT

A short one — Getting the Nvidia Geforce GT 720M graphics chip on a Dell Latitude E5440 running under Ubuntu Linux 21.04

I’m Jason Firth.

Sometimes it’s a real struggle going through and trying to find out how to do something, and when you find a simple answer you just wish someone else had written it down.

I have a Dell Latitude E5440 I got off of eBay. Great little machine. It has a decent screen for the era, 8GB of DDR3 memory, I put a 512GB SATA SSD into it, I really like this little thing! I initially installed Windows 10 on it, but I wasn’t happy with how it ran. It just didn’t quite seem like the machine it was, so I kept moving.

I eventually decided to put Ubuntu Linux 21.04 onto it, since that more or less met my use case.

The problem I had is that the Geforce GT 720M is a really strange model. Even trying to get drivers for Windows 10 was challenging, and that’s rarely a problem!

Normally in Ubuntu, you’ll just go to the driver manager, and then go to “additional drivers”, and any proprietary devices will be shown. Unfortunately, the Geforce GT 720M was not shown on this window.

I tried a few different things, including the bumblebee optimus program, but I didn’t want to run certain programs using the Geforce, I wanted to run all my programs including compositing using the Geforce.

Finally, I found the solution!

First, I had to get rid of the nouveau open source video driver

sudo apt-get purge xserver-xorg-video-nouveau

Second, I ran an autoremove just to clean things up.

apt autoremove

Finally, I had to install the 390 series driver. This particular version is important because the 720M is actually a 600 series card.

install nvidia-driver-390

After a quick reboot, I didn’t immediately see a difference, but there was now an nvidia X Server settings item in my menu. Going into it, I was able to select “performance mode (nvidia)” which ensures the discrete GPU is always doing the heavy lifting when displaying graphics.

I don’t think a lot of people have Dell Latitude E5440s running a Geforce GT 720M discrete graphics chip, so there weren’t a lot of clues about where to start. Hopefully from now on people searching for the solution to this problem can find the solution in this post.

Thanks for reading!

Site News

Workmanship matters

As I’ve documented previously, I moved this website from a third party host to hosting it from my own ‘datacenter’. For a while, said ‘datacenter’ consisted of a bunch of computers sitting in my spare room on the floor, but I wanted to clean things up and make it a bit more permanent, since I intend to just let them sit and run for a very long time, hence getting fanless PCs (and two of the machines don’t have a single moving part)

I would have preferred to use slotted tray such as the kind available from panduit, but I was limited to what I could find from home depot, so I used stickybacks and ty-wraps and hid the complexity with an extra little board. I’m very happy with the results, and it’s something that doesn’t look bad on the wall. Even better, these computers really are meant to be mounted vertically, so I immediately got a 10+ degree celsius temperature drop.

In the field, neat installations are very important. A neat installation is more likely to stand the test of time, and the extra thought you put into workmanship will translate to a more robust final product most times. This home installation took a bit more time and money to complete, but it’s working better than ever and there’s a lot fewer ways it can be damaged than if I let everything be loose.

Thanks for reading!

Industrial IT

Installing ubuntu on a chromebook c201p

how to get ubuntu running on an asus chromebook c201p

I’m Jason Firth.

My dad is starting to enjoy chromebooks, he’s been playing with them for a couple years, and so he had an Asus Chromebook C201p kicking around. He said to me “Play around with it, maybe you can get full blown linux installed on it!”

I was able to get libreboot installed fairly easily following the instructions I found here. Once that was done, I spent a long time fidlding around trying to get everything working, and it wasn’t easy.

The problem I’ve been having is that the most commonly available install is based on a totally free kernel that doesn’t support wifi. the only other image I could find supported wifi with an older kernel with non-free elements, but I couldn’t get the software I wanted running. I think I’ve found a decent compromise for now, so I wanted to share the compromise with everyone.

So to start with, you’ll want to set up libreboot using the above. The scariest part of that is opening up the case to remove the write protect screw.

Once you’ve got that, you can now boot off of a USB memory stick by pressing CTRL-U at bootup.

To create the memory stick, you’ll need the following:

Win32 disk imager utility

The USB memory stick image

You use the imager utility to write the USB memory stick image.

You might want to make a backup of everything on the device before you continue. I think you can use the dd utility to do that, but frankly I made the mistake of not doing that step so I can’t tell you how to do it.

Once you have your backup, boot up onto the USB memory stick you created. It’s going to keep showing different boot messages after it shows the login prompt so you might not recognise it. you can just enter the username and password regardless.

the username is root the password is toor 

This copy of ubuntu is 18.04, which is supported for several years after the writing of this article. I tried later versions but it started to mess up.

This seemed to give me the ability to run X11, as well as wifi you could control from x11, and overall a decent experience. I wasn’t able to get sound working, but I believe that the drivers do work and there’s just a volume thing to fix. At least this will bring your system up to a point that you can work on the system from the system.

To install to the internal mmc, I did the following:

  1. I ran fdisk on /dev/mmcblk0 and erased all the partitions, then created a 32MB partition at the beginning of the drive and a second partition making up the rest of the drive. The first partition needs the partition type of 65 to be the chrome boot partition.
  2. I ran:
dd if=/dev/sda1 of=if/dev/mmcblk0p1

to copy the boot partition from the USB stick to the chromebook.

3. I ran the following commands to create a filesystem, mount it, and copy the contents of the system running on the USB stick to the mmc:

mkfs -t ext4 /dev/mmcblk0p2

mount /dev/mmcblk0p2 /mnt

rsync -aAXv / --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /mnt

You can now reboot and should boot into the linux system now installed on your internal mmc.

once you’re logged in, you’ll probably want to set up some basic wifi.


wpa_passphrase [SSID name] [SSID Passcode] > ./wpa_supplicant.conf

wpa_supplicant -B -c ./wpa_supplicant.conf -i wlan0

dhclient wlan0

You can run apt update to make sure you’re working with the latest files, then you can do a few things to help make your setup more secure.

  1. passwd to set the root password
  2. adduser [username] to create a user
  3. nano /etc/sudoers to add your new user to the sudoers file

Now when you log in next time you can log in as a normal user and elevate privileges if neccessary.

Now it’s time to install a full desktop environment.

you can run apt install lubuntu-desktop to install an lxde based desktop, kubuntu-desktop to install a kde based desktop, xubuntu-desktop to install an xfde based desktop, or ubuntu-desktop for a gnome based desktop.

Once the install is complete, run reboot to reboot. You should now see a graphical login, and the system should operate like a normal ubuntu desktop, albeit one without 3d acceleration.

I hope this helps for anyone who was like me and looking for some help setting up an asus c201p chromebook to run a full powered version of linux while using the internal wifi and being able to run most standard software. I’m lucky there were a lot of people doing good work elsewhere to help me get to this point. If I manage to get a more up to date version of linux installed, and especially if I manage to compile a fully featured kernel that’s newer than the ancient 3.14 version included in this image, I’ll make another post.

I don’t want to misrepresent, this seems to be functional at this point but all it takes is one wrong update to blow things out of the water, and it’s still missing some key features that should be functional.

thanks for reading!

3d printing

Tevo Tornado – updated configuration for Duet firmware v3 series

I’m Jason Firth.

One of the most popular pages of all time on this site is where I connected my Tevo Tornado to a DuetWifi. I’ve been using that 3d printer routinely for years since I put it together, and it’s been rock solid.

That being said, one thing I believe strongly in is running the latest version of software. You never know when you’re going to run into a bug that has been solved years ago, or you’ll need to solve a problem and nobody else can help with your ancient copy of the program.

This year, the duet firmware had a major upgrade from the version 2 series to version 3. The new version has some major changes. Where Version 2 used input and output numbers, version 3 uses specific i/o names. It’s just slightly different.

As a result, you can’t just move to the new version of the firmware and expect it to work, the configuration needs to be modified to deal with the changes to the i/o addressing.

After waiting way too long, I finally got around to making the modifications and testing them. I was able to get the printer back up and running!

When you’re upgrading the firmware from here you will need to do the upgrade in 2 steps: First, you need to install the 3.0 revision to bring your machine to the latest. Next, you need to install the latest 3.x series firmware.

Here is the config.json you can load into the reprapfirmware configurator.I recommend using this with the reprapfirmware configurator to configure anything specific to your unit.

Here’s the final configuration. You’ll probably want to change the wifi parameters before uploading it to your printer if you drop it in directly!

Thanks for reading!

Site News

Fanless PCs, the latest rings in this tree

I’m Jason Firth.

I’m never a fan of when the website is down in spite of the fairly small number of readers (hi everyone!), but I have wanted to make a change for quite some time.

In a previous entry, I talked about migrating from from my previous hosting provider. Godaddy was a decent host, but they made some changes that stopped this blog from operating properly, so eventually I switched. I didn’t really want to go with a third party host, but after fighting with trying to get a port opened to the outside world, I decided it was safest to do so. At the same time I started playing with Nextcloud, a service that’s sort of like a self-service google cloud. I really like nextcloud, and every few months I see it get better and better.

Unfortunately, nextcloud isn’t a small or simple program, and eventually the hosting company got upset with me for using to much resources on their servers. They offered me to pay a large sum for their top plan, but I wasn’t really feeling warm and fuzzy about third party hosting — who was to say they wouldn’t take the money and still be upset with me for using too many resources? Besides that, there were things I wanted to do that I’d want direct control to accomplish, so I decided to run my own server. In my experience, fans are the #1 most likely cause of failure on a PC, so I decided my websites would run on a fanless PC. I found a fantastic deal on an NDIS 163 fanless sign PC. The specifications of the PC are right on track with what I was looking for: a Core 2 Duo low energy CPU, and a SATA hard drive. It came with a Crucial MX500 SSD, but I wanted to use a spinning hard drive for this server because in my experience spinning hard disks are still the most reliable choice for long-term storage.

I looked inside at the box, and found some standard DDR-3 memory slots, a couple mini pci-e card slots for wifi or wlan, and a replacable CPU block. The heat sink for the CPU and chipset connected to the top of the machine with some thermal pads. Overall a simple, boring design which is exactly what I wanted.

The power connector turned out to be the biggest issue. The power connector is KPPX-4P 4-pin male connector. I determined by looking at the circuit board that the top to pins were positive, and the bottom two pins were negative. Miracle of miracles I actually happened to have such a connector in my house, so I quickly built a power supply.

It’s surreal turning on a PC like this. Most PCs announce that they’re running with a loud whirr, this one doesn’t have anything like that. Even the mechanical hard drive is so quiet that all other ambient noise in the room overwhelms it. You don’t hear a thing.

If anyone is coming here hoping to find out if you can use an NDiS-163 as a daily driver PC, I strongly recommend against it. I ran pcbenchmark in Windows 10 and what I found is that it was relatively fast for the components within, but really very slow compared to anything you’d use on a regular basis. Mobile versions of CPUs tend to be de-rated to reduce the energy consumption, so even as a core 2 duo, it is already slower than usual, and the video is just a standard intel integrated graphics which don’t like Windows 10 very much at all. Based on the temperatures this ran during setup (The core temperatures were below 40C) I expect this machine to run for decades without issues, which is what I wanted. Worst case scenario the hard drive fails and I install another one.

To be honest, for the sake of a good story I wish I could tell you there was a bunch of excitement and interesting problems setting up the computer, but there wasn’t. The machine is a pretty straightforward intel-based machine, and ubuntu server installed without any problems. This document contained all the basic steps for installing nextcloud, and the only big change is I switched from php 7.2 to php 7.4 since I saw that the next version of nextcloud won’t support 7.2 any longer. 

I’ve wanted to use nextcloud talk between my wife and I, so I used This document to set up a TURN server. Such a server acts as a go-between if two machines are both behind NAT and thus cannot talk to each other directly. This meant that video conferencing functioned — which is fantastic. Imagine, you get full video conferencing without a middle-man. Everything involved is your own hardware!

I used this tutorial to set up encryption, so everything is https. Google pushed for https to be default on the Internet quite a few years ago. Frankly, it’s sort of a waste for 99% of what you’d do. Did you really need to encrypt this article to read it? It’s free for all to see, you know… Regardless, playing ball with Google is a pretty much a given in 2020, so I went ahead and did as they asked.

One of the problems I faced last time is that I couldn’t get a port 80 or port 443 to the outside world. Thankfully, I resolved the issue by taking control on my own — replacing the phone company’s router with one of my own. Now I face a problem of dynamic IP addressing. Someone made a great article here that shows how to automatically update your dns records within 15 minutes of an IP address change. I followed that and now all my sites resolve to their domain names.

And that’s about it! Like the rings in a tree, I can go back and see the signs of the different eras of my websites, and I love the process of learning how to set it all up.

Thanks for reading!

Industrial IT

Keep your nose to the grindstone, that’s how you win.

I’m Jason Firth.

Sometimes you have problems that seem insurmountable, and all it takes to solve them is keeping your nose to the grindstone long enough.

I recently decided I wanted to have Network Attached Storage. Lately cloud services like Google have been getting sort of strange, and I just felt more comfortable having my data stored locally on my own hardware. I also wanted to have the data mirrored. This would mean that I have the data on two separate hard disks, so if one drive had problems, I would have a copy available. I purchased a pair of used hard drives and a used NAS. Unfortunately, the NAS shipped with a 50V power supply instead of a 12V supply so it immediately blew to smithereens, and I feared it may have damaged the drives at the same time. I purchased a new NAS and inserted the drives, only to have problems immediately.

The drives were Western Digital Red 3TB drives. They are both fairly old, but I figure this should be adequete to get me started and I can replace the drives at a later time.

To troubleshoot the drives I hauled out my ancient PCI got all sorts of Input/Output errors on the drives. I assumed it may be a problem caused by a faulty NAS, but something didn’t smell right — the drive appeared to be functioning properly. My intuition was telling me that the drives should be functional or not — the idea that the electronics would appear to be functioning perfectly while we see massive failures on the magnetic media or read/write heads didn’t really pass the sniff test, so I decided to dig deeper.

Here’s what Western Digital has to say about error 220:

My daily driver PC is a laptop, so I couldn’t just plug in the computer and expect success. I would have to do everything I could from USB memory sticks.

Next up, I downloaded and ran a Western Digital diagnostic utility for MS-DOS. That’s where I got the clue I needed. According to the utility, it couldn’t run a bunch of benchmarks because the hard drive had a Code 220 or Code 0220 “Drive is Locked”. That was my clue that something I could fix was going on.

The utility I finally succeeded with was called HDAT2. With it, I was able to unlock the drive.

The following is a fairly raw recounting of the steps I used to fix the drives:

  1. Download Rufus from
  2. Downloaded HDAT2
  3. Created a freedos boot USB using rufus and copied the hdat2 executable files to the stick
  4. Opened HDAT2
    1. cd hdat2
    2. hdpmi32
    3. hdat2
  5. Selected the drive
  6. Hit Enter to open the menu
  7. Selected the security menu
  8. Hit enter on the Unlock feature
  9. hit I to select the master identity
  10. Pressed K to select a known password, there were a number available. The one I ultimately needed was “WDCWDCWDCWDCWDCWDCWDCWDCWDCWDCW “
  11. Pressed S to set. It will ask if you’re sure. Press Y. If it is correct then it will say it’s succeeded. If it isn’t correct then it will say aborted. You can try the other known passwords.
  12. Next select disable password from the menu.
  13. Select the master identity by pressing I once and press S to set. Press Y to confirm.
  14. If it worked correctly then it will say it succeeded. If it failed then it will say aborted.
  15. Security on the drive is now shown as disabled!
  16. Before I took these steps, the drive could not be accessed successfully in any way. After I took these steps, I was able to immediately install Windows 7 on the drive, proving that it worked.

Thanks for reading!