Table of Contents

Download PDF Parts List View on YouTube Download Code


Today we have a HUGE project, one that will likely take you several hours to put together but will reward you with years of service.

We are going to build a Linux workstation that is specifically set up for developers and experimenters who want to tinker with microcontrollers and microcomputers. In other words, people like us!

I’m going to put together a “barebones” computer system, which is really easy, and then I’ll install Ubuntu Linux on it. After doing some “fine-tuning” I’ll proceed to install a large number of software applications – all of them free and of use to developers.

Of course, you don’t need to build a computer from scratch, you can repurpose an existing one or just use the article and video to expand on your existing Linux workstation.

Build a Linux Workstation for Developers

And even if you do build one from scratch you can certainly use different parts, and you could also install another distribution of Linux instead of Ubuntu. You’ll still find a lot of valuable information here for putting together or expanding a developer’s workstation.


Making Things Easier!

This is a big article, and there is a very long video that compliments it. It can be a lot to digest in one sitting.

Building the computer, installing and configuring Linux, and adding the software for your developer’s workstation can be an all-day project, and you may want (or need) to break it into more than one session.

To assist you I’ve provided a couple of simple but very useful free resources for you:

A Cheat Sheet – This is just a text file with a list of all of the command-line commands and download URLs you’ll find in this article. Just paste a copy onto your new computer’s hard drive or desktop and then copy-and-paste all of your installation instructions. It will save a lot of typing!

A Printable PDF Document – This article, in a printable PDF document. You may want to print it (or view it on a tablet) to use while putting together your workstation.

Both of these are in a ZIP file that you can download here.

Hopefully, this will make your task a lot easier!

Workstation Requirements

Obviously, we are going to need to build or repurpose a computer for use as a workstation. And by a “computer” I mean:

  • Not a tablet.
  • Not a phone.
  • Not a Chromebook.

In other words, a board capable of running a desktop operating system like Windows. Mac OSX or Linux.

It can be a desktop or notebook computer, either will work well. The requirements are not that strict, here are a few considerations:

  • It needs to be powerful enough to run common IDEs and other software.
  • It needs to have sufficient graphics capabilities to use with CAD and PCB programs.
  • It should have a reasonable amount of fast internal storage.
  • It should have both WiFi and wired networking.
  • It needs at least 1 USB port with sufficient current to run a microcontroller.

You could easily repurpose an existing computer for this task, or you could put together a new one (which is the route I am taking). And if you have an existing Linux workstation you could simply use this article to install some of the software you may be missing.

You can also install Ubuntu (or another distribution of Linux) on an existing Windows computer as a dual-boot system.

What about Single Board Computers?

Computer vs SBC

Some high-end SBCs (Single Board Computers) are powerful enough to use as developer’s workstations, so you can certainly use them as well.

You can run Ubuntu on several SBCs, you may want to download an SBC-specific version if there is one available for your board.

If you want to use a Raspberry Pi there is a Raspberry Pi version of Ubuntu available. The 8GB version of the Raspberry Pi 4 would make a very usable workstation for most applications.

If you do decide to use an SBC pay attention to the power supply, remember that it will need enough current to run both the SBC and the microcontroller attached to it.

Linux Distributions

I will be using Ubuntu Linux for my developer’s workstation, but there are several other distributions that would work just as well. If you have a lesser-powered computer then you might want to use one of the “lightweight” versions of Linux instead of Ubuntu.

The following is certainly not a comprehensive list of Linux distributions, it’s just an outline of some of the more popular builds.


Ubuntu Linux is probably the most popular distribution of Linux today, and it’s the version of Linux that we will be using today. It’s popularity is an advantage when searching for information, something to consider when choosing a Linux build.

Ubuntu is based upon Debian Linux and is the head of the “Canonical family”. Other Canonical family members include distributions such as Kubuntu, Xubuntu, and Lubuntu.


Debian is the root of the Ubuntu OS, as well as several other builds of Linux. This is the “pure operating system” without a lot of frills, it is stable and dependable and can be configured with a variety of options to create the perfect Linux experience.

Debian is very popular for running servers, but the desktop version is also gaining popularity.

Linux Mint

Another very popular Linux distribution, Linux Mint is a lightweight version of Linux that is based upon Ubuntu and Debian.

This version of Linux allows you to choose from several different desktops during installation, and it comes complete with a full set of multimedia applications. It’s a great version of Linux for beginners, or for those more familiar with Windows.

One “Windows-like” feature that Linux Mint has is Timeshift. This is similar to the Windows Restore, it lets you revert your computer settings to a previous version.

MX Linux

MX Linux bills itself as a “midweight” build of Linux, providing an attractive KDE-based desktop that will run on virtually any piece of computer equipment that you can find.

This is another Debian-based distribution that has become very popular due to its ease of use and elegant desktop.

Manjaro Linux

Manjaro Linux is another popular distribution that promises to be both lightweight and full-featured.

Unlike most of the other distributions, Manjaro Linux is not based upon Debian. Instead, it is a derivative of Arch Linux, itself a lightweight and stable Linux build.

Manjaro comes with a number of audio and video applications pre-installed, making it an ideal choice for media-heavy users.

Build & OS Install

OK, so now we have our hardware selected and we know which distribution of Linux we wish to use. All that is remaining is to roll up our sleeves and get building!

Building the Workstation

I’m building a computer from scratch, which is a really easy task since I’m using a “barebones computer” as my base. These devices are essentially computers without RAM or hard disk (or SSD). There are several to choose from.

Workstation components

You certainly don’t have to use the same components that I did for your workstation, but in case you want to duplicate my project exactly here is what I purchased:

  • Intel NUC 10 with Intel i7 processor.
  • 1 TB Samsung EVO V-NAND SSD – this is an M.2 SSD used to hold the OS.
  • 1 TB Western Digital Blue SSD – this is a SATA SSD used as a work drive (a work drive is optional if your main drive is large enough)
  • 2 x 32GB Vengeance DDR4 2666MHz RAM chips.

Now I’ll show you how I assembled this hardware.

Intel NUC

The Intel NUC series of computers are tiny but powerful devices that leverage Intel’s notebook computer hardware to create desktop computers. They are available with a range of Intel processors, and the lower-priced units are quite competitive with SBCs when you factor in the cost of a case and power supply.

Intel NUC Workstation before assembly

The NUC “barebones” models come fully assembled but without memory and SSDs. You can also buy NUCs that are assembled and configured with Windows 10.

The NUC also comes with hardware to mount it on the wall or onto the back of a video monitor that has 75mm VESA mounting holes.

In order to mount the additional components (drives and RAM), you need to open the NUC by loosening the four screws on the bottom. The bottom and top are joined with a ribbon cable, it’s long enough so that you don’t need to disconnect it.

Once you have it open you can install the memory.

Memory Installation

The NUC I purchased has two memory slots for DDR4 memory, and it can address a maximum of 64GB.

I purchased two 32GB DDR4 memory chips, these are made specifically for laptops and notebooks, which makes sense as the NUC uses notebook hardware.

Workstation add RAM chips

The memory chip installation is pretty simple. Make sure you are wearing an anti-static strap and insert the chips, bottom one first, into their sockets. They should go in very easily, if you encounter any resistance back off and try again – you may have just come in at the wrong angle.

Make sure that the memory chips are inserted correctly, the socket should “snap” to hold them securely.

After that, we can install the two SSD drives.

SSD Installation

I purchased two SSD drives for my workstation, they use different interfaces:

  • The M.2 interface is used for the boot drive.
  • The SATA interface is used for the second (work) drive.

Both SSDs had a 1TB capacity. I don’t need a huge amount of local storage as I keep most of my files on my NAS, but you do want to use a local drive for the best results while coding.

Workstation add SSD

A second drive is optional, you may certainly get by with just one. If you purchase one of the “thin-form” NUCs then you can only mount an M.2 drive.

The M.2 SSD goes into a socket on the main NUC board. There is a screw that you need to remove first, this is the screw that holds down the SSD. The NUC comes with an extra screw and spacer, that can be used if you have a half-size M.2 SSD.

The SATA SSD is mounted on the bottom of the NUC, it slides into a metal housing. There are two screw holes near the front (connector side) of the drive, Intel provides a couple of screws that you can use here to secure the SSD.

Workstation add work SSD

Once the two drives are mounted you can reassemble the case.

Workstation final assembly

Installing Ubuntu Linux 20.04

Now that you have a computer built or procured it is time to install Linux.

I’m using Ubuntu Linux 20.04, which is the latest long-term release of Ubuntu. If you also use Ubuntu I would suggest using one of the long-term releases, as they are supported for a long time. These versions all have “04” at the end and an even number at the beginning, and they are released every two years. So the next long-term release (as of this writing in December of 2020) should be 22.04.

Getting the Ubuntu Installation Media

The first step in our installation is to get the installation files and transfer them to our installation media. The installation media can be either a USB stick or DVD-ROM, however, I strongly suggest the USB stick.

Either way, you will need another computer and some software to burn the image to the installation media.

Etcher Download

You may already have some software to burn images on your computer. If you don’t then I recommend Balena Etcher, a free application that is available for Windows Mac and Linux. We will actually be installing Etcher on our development workstation later, as it also is perfect for writing images to SD and microSD cards.

So with your other computer visit the Ubuntu website and download the image for the latest long-term support version of Ubuntu, which as of this writing is version 20.04.

Ubuntu Linux Download

The download is pretty large, so if you have a slow Internet connection it may take a few minutes (or more).

Once you have your image burn it onto your installation media, which needs to be at least 4GB in size. These days it would be pretty hard to find a USB stick that small, so it shouldn’t be a problem meeting that requirement!

Booting the Installation Media

Hook up a keyboard, mouse, and video monitor to your workstation. Also, make sure to connect an ethernet cable to the computer. Insert the USB stick (or DVD-ROM) with the Ubuntu image on it and then power up the workstation.

If this is a new computer with a blank hard disk then the installation media should boot up and start loading.

If this is a computer with an existing operating system then it may not boot and the machine will startup with its existing operating system. If that happens then you need to reboot and go into your BIOS utility, which generally involves holding down a key (or two keys) during the start-up. Different models of computers use different keys, most print the BIOS startup key sequence on the screen when they first start.

Once the BIOS utility has loaded then you’ll need to look for the section regarding the “boot sequence”. Here you will be able to set the startup sequence, i.e. what drive does the system look to first when booting up? You’ll need to change the sequence to have your installation media start before the computer’s hard disk (or SSD).

Again different BIOS programs do this differently, but they all have this feature. When you are done you need to save the settings and reboot. This time the installation media will load and the Ubuntu installation program will begin.

Installing Ubuntu Linux

Once the installation media boots then it’s time to install Ubuntu Linux.

When the media starts it will bring you to an Ubuntu desktop, with buttons to install Ubuntu or to just give it a try. We obviously want to install it, so select that button.

Ubuntu begin installation

You will then need to select the type of installation you want to perform. You may install Ubuntu in addition to an existing operating system (i.e. Windows) or you may erase the disk and install Ubuntu upon the entire computer.

As I have a brand new machine with no OS installed I am going to select the latter, if you want to create a “dual-boot” machine and have already reserved a partition then make the other selection.

Ubuntu Install - select keyboard type

The rest of the installation is pretty straightforward. You’ll be asked to confirm your keyboard type (make sure you get that one correct), let Ubuntu know your desired username and password, and select your location so the system time can be set.

Ubuntu Installation set location

The installation wizard will then proceed to install Ubuntu Linux.

Ubuntu Installation set credentials

After installation, you’ll be prompted to remove the installation media and then reboot.

Ubuntu Installation

Once it reboots you can log into your new workstation and start configuring it!

First Boot

After you have logged into your new workstation you can start exploring the Ubuntu desktop to get familiar with it.

But before you get too cozy there are still a couple of installation tasks to complete.

The first thing you should attend to is to see if you need any additional 3rd party drivers for things like your video card or other peripherals. Ubuntu allows you to use these instead of the open-source ones they provide, and with some graphics cards, this can improve performance by a huge factor.

To perform this check go to the bottom left corner of the screen and click on the icon that looks a bit like a keypad – this is the Show Applications icon, which brings up an overlay window with all of the installed applications.

At the bottom of this window, you’ll see a selection to choose between Recent and All applications. Select All to see the applications already installed on your new workstation.

Look for the Software & Updates application, don’t get it confused with the Software Updater application, which has a similar icon. We’ll be using that one later, but right now it’s the Software & Updates application that we want.

Ubuntu Canonical Partners

This application sets the sources for the software that is installed on the computer. This allows the computer to obtain updates for these applications.

The first thing we are going to do is ensure that we can install the software packaged by Canonical for their partners. Canonical is the publisher of Ubuntu.

Navigate to the Other Software tab and look at the first entry, Canonical Partners. If it is not checked off then do that. Once you do the Software & Updates application will refresh itself, be patient as this can take a few minutes.

After that move to the Additional Drivers tab. This is where non-Ubuntu drivers for your hardware will be listed, and you can select to use them instead of the Ubuntu drivers. Give the screen a moment to refresh and see if any drivers are listed, in my case there were none. If there are, you might want to switch to them, as in many cases it can improve performance.

Close the Software & Updates application.

Now we can open that similar-looking icon application, the Software Updater application.

This application, as its name implies, checks for and installs any updates available for Ubuntu, the Linux core, or the applications taken from the sources defined in the previous step.

There are likely several updates to run, items that have been updated since the installation media was published by Ubuntu. You will likely see a notice saying that updates are available, but if you don’t then click the Check for Updates button and you’ll likely find many of them.

Ubuntu Software Updater

Click Install to install the updates. If any of the updates happen to be Linux Kernel updates then you’ll be asked to type your password, otherwise, the updates will install and the utility will display the installation progress.

Once the updates are completed you may be prompted to reboot, this usually happens if a Linux Kernel update was performed. Reboot the computer if instructed to do so.

Finally, there is one more task to complete before we can start setting up our software.

Configure WiFi

Thus far we have been using an Ethernet cable for our workstation, which is much preferred over WiFi as it’s faster and more secure. But we also need to have WiFi capability on our workstation.

Why would you need both? If you are working with microcontrollers or microcomputers then there is a very good reason to have both.

Controllers like the ESP32 and ESP8266 have built-in WiFi capability. You can use these as WiFi clients, or you may use them as access points.

When used as access points you’ll need a computer or other device (phone, tablet) to connect to them via WiFi. If you have WiFi AND Ethernet on your developer’s workstation you can connect to the microcontrollers access point and still remain connected to the Internet (and your local area network). This is very convenient.

WiFi Configuration is very easy, pretty well the same as any other operating system. In order to set this up, you’ll need to use the Settings application, which you’re going to become pretty familiar with if you aren’t already.

There are a couple of ways to get to the Settings application:

  • You can click on the top bar where the speaker and battery icons are. The menu that drops down has a link to the Settings application.
  • You can open the Show Applications window and look for Settings.

You’ll find the WiFi Settings right at the top of the Settings menu, it will display the detected WiFi networks. Select the network you wish to join and supply the password to connect to it.

Setting up Ubuntu Linux

The Ubuntu Linux Setup Wizard does an excellent job of setting up your hardware and locale, as well as your user account. After the first boot and update, you are ready to get started.

You can, of course, spend some time customizing your desktop to suit your tastes, you might also want to install printers or other peripherals. How you do all of that is beyond the scope of this article, but with about a million articles and videos on the Internet about using Ubuntu Linux you probably will be just fine!

What I want to show you, before we start installing applications, is how to set up some of Ubuntu Linux’s features to make your development environment a bit more streamlined.

Some of these settings and choices are personal preferences, so feel free to customize everything exactly the way you want it.

Installing Software on Ubuntu Linux

Before we begin creating the ultimate developer’s workstation you’ll need to know how to install applications on Ubuntu 20.04.

Windows users generally run either EXE or MSI files to install new software, while Mac users work with DMG files. On Ubuntu 20.04 you can install applications using one or more of four ways:

  • Using the Ubuntu Software application, that’s the icon which looks like a suitcase with an ”A” on it.
  • Using Snap files at the command line. This is in many ways similar to the above, as the Ubuntu Software app now uses Snap (older versions of Ubuntu did not).
  • Installing apps at the command line from the Ubuntu repository.
  • Installing apps at the command line from 3rd-party repositories, which you’ll need to add first (also from the command line).

We will be using a mixture of all of these methods to install software on our development workstation.

Ubuntu Software

Working at the Linux Command Line

If you are not familiar with working at the command line then I have great news for you – you’re about to become very familiar with it!

Unlike Windows and Mac OSX, a lot of software installation and permission modifications are performed at the command line.

It’s nothing to be scared of, all you need to do is open your Terminal application (we will discuss that in a bit) and type the commands shown here in this article or on the ”cheat sheet”.

Using sudo

When you work at the command line you are using your own Linux account, which is that of a regular user. For many tasks a regular user won’t have sufficient permissions, so you’ll need to work as a “super-user”.

Giving your account “super-user” status is not a very good idea, as you could easily break something accidentally. A better way is just temporary “act” as a super-user.

This is the function of the sudo command. It literally means “super-user do”, and commands typed after it will be run with super-user authority.

When you first use sudo in a session you’ll be prompted to type in your password, the same password that you used to login to your workstation. Note that as you type it the cursor doesn’t move, it’s a bit eerie but you’ll get used to it!

After that, you’ll be elevated to super-user, and all the commands you type in will be run as such.

Updates and Upgrades

Before installing new software at the command line it’s a good idea to make sure your system is up to date. Although you could run the graphical Software Updater that we used earlier, it is easier to do this from the command line.

Open a Terminal and run the following two commands:

The sudo command lets you run the update and upgrade commands as a super-user, which is required. The next statement, apt, is a Linux command-line utility that installs, updates, and removes packages in Debian-based Linux distributions,

You should run “sudo apt update” before you install new software. I’m NOT going to repeat the sudo apt update command throughout this article, you should take it as a given that you should run this first.

As for sudo apt upgrade it doesn’t need to be run every time, but it’s a good idea to run it once in a while. It updates the packages on your machine, so any software installed from repositories will get upgraded if there is indeed a newer version.

Incidentally, you’ll also notice that sometimes we use “apt-get” instead of ”apt”. Essentially “apt” is a subset of “apt-get”, it doesn’t have as many options but it is supposed to provide a “better user experience”. They are not always interchangeable, and you’ll find both used in the following instructions in this article.

Essential Included Software

Right out of the box Ubuntu Linux has some useful tools that you’ll likely want to make a Favorites (taskbar icon) for.

Creating a Favorites Icon in Ubuntu 20.04

The Ubuntu desktop has a Dock that can hold all of your favorites, this would be called a “Toolbar” by some people. A few icons will already be in there right after installation, you can leave them or remove them as you wish.

The Docks position and behavior can be adjusted in the Settings screen. If you have multiple monitors you may choose to show the Dock on only one or on both displays.

To add more items to the Dock, or to just open up applications, click the Show Applications grid symbol on the bottom end of your taskbar (assuming you have your taskbar installed on the left side).

Ubuntu Show Applications

The Show Applications window will overlay the desktop, displaying a collection of icons arranged alphabetically. A control at the bottom allows you to view all of the applications, or just the ones you use the most.

You can launch an application just by clicking on its icon.

You can also add the icon to your Dock, for easy access later.

  • Right-click on the icon.
  • Choose “Add to Favorites” from the resulting menu.

I would suggest adding your most frequently used application to the dock for easy access. You may also place icons on the desktop if you wish. You can preposition the hotels on your Dock by dragging them with your mouse.

Terminal & Text Editor


Probably the most useful utility provided in Ubuntu is the Terminal. You will be using this to install software and to do some system maintenance, so it’s a good idea to add this to a prominent place in your Dock.

You can find the Terminal by clicking on the Show Applications icon and typing “terminal” into the search box. This is definitely an application that belongs in your Dock favorites, in my setup, I put it near the top.

You can use the Preferences dialog box in the Terminal to adjust the colors and fonts used, you can display this dialog box by clicking the menu icon (next to the Search button) and choosing Preferences.

Text Editor

I have always considered a Text Editor to be one of the most useful programs included with any operating system. On my Windows machines, I always have a Notepad icon on my Taskbar, and my Macs all have TextEdit in their Docks.

So it should come as no surprise that I always put a link to the Text Editor in my Dock favorites.

It’s as easy to add as Terminal – just open the Show Applications and search for “Text Editor”, and add that to your favorites.

The Text Editor included with Ubuntu 20.04 is Gedit, a very popular Linux editor for the GNOME desktop. Using it is pretty well the same as using any text editor.

A text editor is super handy when transferring code snippets or making a quick list. You can even write simple programs with it, although I’ll be installing better applications for that.


Here are a few “tweaks” that I like to make whenever I set up a new workstation. As these are personal preferences you’ll want to be sure you agree with my preferences before performing these modifications yourself.

Nemo File Manager


A File Manager is an essential utility in any operating system, and there are several file managers available for Linux. One of my favorites has always been Nemo.

I like Nemo because it has both tabs and dual-pane mode, two features that I use extensively. It also has an easy-to-manage Bookmark system, and it works well on networks.

Installing Nemo is pretty simple, and you can do it using the Ubuntu Software application.

Nemo file manager installation

  • Open the Ubuntu Software application (the “suitcase” with an “A” on it).
  • Click on the Search icon at the top.
  • Type “nemo”
  • A listing for “Files” will appear.
  • Install “Files”

Now go back into your Show Applications, you’ll now see two icons for applications called “Files”! Nemo is the one with the dark folder, assuming you’re still using the standard color scheme.

Open the new Files program, you can go to the Help-About dialog box to confirm that you are indeed using Nemo.

Try it out – explore your computer and your network. Try the tab mode (Ctrl-T) and the dual-pane mode (F3), they can also be used together.

I replaced the Files application in my Dock with Nemo.

XKill Hotkey


While I am a pacifist by nature and generally abhor violence of any sort, there does come the occasional moment when I really, really need to kill something. Fortunately, nobody is in any danger during these fits of rage, as all I really want to do is kill an unresponsive program so I can regain control of my computer and my life!

This next modification will come in handy if you ever find yourself evolving into a homicidal task-killing monster.

We are going to use a program called XKill to be our hired assassin, and we will assign a hotkey sequence to it so it’s available whenever we need it. XKill comes bundled with pretty well every distribution of Linux, so there is nothing to install. We just need to make XKill easier to use.

Keyboard Shortcuts

You can set up a custom hotkey for XKill as follows:

  • Open the Settings app.
  • Scroll down on the left pane to the Keyboard Shortcuts item.
  • Scroll down the keyboard shortcuts, there is a box with a “+” symbol. Click it to add a custom shortcut.
  • A Custom Shortcut Editor box will open.

What you are going to do here is call the “xkill” application when you press a custom keycode.

  • Type “xkill” in both the Name and Command text boxes. Use all lowercase.
  • Click the Set Shortcut button bar.
  • Press a unique shortcut for Ubuntu to remember. I used Ctrl-Alt-K for mine.
  • Once the shortcut is set you’ll see it displayed below the textboxes. Press the “Add” button to add the shortcut.
  • Close the Custom Shortcut Editor.

XKill add keyboard shortcut

Now try out your new function. Press your custom shortcut keys, in my case I pressed Ctrl-Alt-K. Your cursor should change from the default arrow (or whatever you customized it to) into an “x-shaped” cursor.

Position your x-shaped cursor over the window of an app you want to close, try it with the Settings windows if you still have it open. Click it and the app will vanish, and your cursor will revert to its original appearance.

If you ever have an application “lock-up” you can now use your new shortcut to kill it.

Turn off Caps Lock

Remove Caps Lock

This sort of falls into a personal preference, but I really detest the Caps Lock key!

If you are someone who loves the Caps-lock key or are perhaps related to this nuisance’s inventor, then I apologize and give you permission to skip forward to the next section.

Otherwise, I really have a bad habit of hitting that key and not realizing it until I look at what I’ve been typing and see it is all in an inverse case to what I’d intended it to be.

I’m sure I’m not alone in this, but sometimes I suspect I am when I see just how difficult it is to turn Caps-lock off. If it was a common complaint surely they would make it easier to fix?

Aside from ripping the key off of the keyboard your ability to stop Caps-Lock is based upon your operating system:

  • On the Mac, it’s actually pretty easy to do.
  • On Windows it’s like pulling teeth, you actually need to perform a couple of registry edits.
  • On Linux, it’s somewhere between the above.

There are a few methods of accomplishing this under Linux, one of the more common ones involves the use of the key-mapping utility xmodmap.

I went about slaying the Caps-Lock monster by opening a terminal and typing the following on my new Ubuntu Linux 20.04 workstation:

This made my Caps-Lock key function as a shift key and brought joy to my heart.

But my joy was short-lived, as I found that once I rebooted the Caps-Lock was back in full force.

To make the change permanent you’ll need to have this command run every time you start your computer. To do this you’ll need to add this to the Startup Applications.

Open the Show Applications screen and search for “startup”. The icon for the Startup Applications Editor will be displayed. Click it to open the editor.

You are going to want to add a new program to the list of startup programs. Do this as follows:

  • Click the Add button. A dialog box will pop up.
  • In the Name field type something like “Caps Lock to Shift”
  • In the Command field type xmodmap -e “keycode 66 = Shift_L NoSymbol Shift_L”
  • Click the Save button.

You will now see your new command in the list of programs to start whenever the computer is started.

This will slay the evil Caps Lock monster for good!

Install ChaseApp


I only “discovered” this handy application a few months ago, but I’m already hooked.

ChaseApp is a free application that runs on Linux, Windows, and Mac OSX. It connects to services you use like Google, GitHub, Trello, Todoist, AWS, Dropbox, and a bunch of others, and it lets you search across these.

So say I search for “ESP-32”. In my case, I have articles I wrote about ESP-32 in Google Docs, entries in GitHub, tasks in Trello, and files in AWS. ChaseApp shows me these as my search results.

Quick summary – it’s a search bar for your own stuff! If you create code and documentation it really comes in handy.

ChaseApp Installation

ChaseApp is very easy to install, as it is in the Snap store. To install it just type the following in your command line:

Once the installation is completed locate the ChaseApp icon using the Show Applications button.

Click on the icon to launch ChaseApp.

You’ll need to connect with your Google, Microsoft, or LinkedIn account to get started. The authorization process will open up your web browser.

Once you are authorized you can begin using ChaseApp. You can click on the ChaseApp icon that is now in your top menu bar and a search box will open, you can also launch the search box by pressing Ctrl-E.

ChaseApp Search Results

Of course, you will want to configure some places to search, so one of the first things you’ll need to do is click on the menu at the end of the search box. This will open up a screen that allows you to connect ChaseApp to a myriad of data sources.

I’ve found this to be a very handy application for sorting through all of the content I’ve created, and the inclusion of Github makes this a great tool for developers.

Format Work Drive

If you have installed a second hard drive or SSD (as I did) in your workstation then you’ll need to format it so that it can be used.

To do this you will be using the Disks application. Open your Show Applications window and look for it, then click on its icon.

This application shows you the disks attached to the computer and the partitions on each of them. On the left pane, you can navigate between the disks, and the right pane displays the partitions.

Select the hard disk that you intend to format (the “work” drive) and click on the Drive Options icon, which is on the taskbar of the application on the right side.

One of the options is Format Disk, which is what we want to do, so select it. This will bring up a dialog box with some options to choose from. You’ll need to name the drive, for the drive format type keep the suggested type. If this is a new drive you don’t need to activate the erase feature.

Ubuntu format volume

Click the Next button to confirm the details. Then click Format to begin formatting the drive.

Once the drive has been successfully formatted you can open the Files (Nemo) application. You should see the new drive listed on the left pane, and you can begin using it.

Now we are ready to start installing some development software!

Install IDE’s

Integrated Development Environments, or IDE’s, are a primary tool for any developer working with microcontrollers, websites, application development, or other code-intensive tasks.

It is not uncommon to have several IDE’s, each one focused on a specific development platform. On the other hand, many developers like an IDE that can adapt to many different environments, so that they can maintain some consistency between projects.

There are a wealth of IDE’s to choose from, and you can install virtually as many as you wish. I’m going to focus on a few that are useful for working with microcontrollers and microcomputers.

Arduino IDE

Arduino IDE

The Arduino IDE is the first Integrated Development Environment that many people work with, having used it with their first Arduino projects. While it is not the most powerful or full-featured IDE it is nonetheless an essential tool for anyone working with Arduino AVR boards, as well as a number of other 3rd-party boards.

Install Arduino IDE

There are actually a couple of ways to install the Arduino IDE on Ubuntu Linux 20.04.

  • Using the Snap store
  • Downloading the latest version and manually installing it.

I’ll show you both methods:

Arduino IDE – Snap Store

This is by far the easiest way to install the IDE. Open up your terminal and type the following:

And that’s all there is to it, the installer will launch and you’re on your way to installing the Arduino IDE.

But one thing you should be aware of is that the version of the IDE that installs from the Snap store runs in a “sandbox”, and does not have access to your Python libraries. Instead, a version of Python and some associated libraries are installed within the sandbox, these are then used by any Arduino libraries that require them.

For the most part, you don’t need to worry about this, but it may cause some issues with additional board managers that you add to the Arduino IDE.

Arduino IDE – Manual Install

A manual installation is a bit more work, but it’s not really that much of an effort.

The first thing you need to do is to find out what the latest version of the IDE is and to get a copy of it. You can accomplish all of this on the Arduino Software Download page.

Arduino IDE Download

At the time of writing the latest version was 1.8.13, which you’ll need to note as you’ll be using version number shortly.

Download the installer file from the Arduino Download page, make sure to select the 64-bit Linux version (if you are using a Raspberry Pi or other SBC you may need the ARM version instead).

Unless you specified otherwise your downloaded file should have been saved in the Downloads folder under your Home directory. Confirm that by opening the Files application (nemo) and navigate to the Downloads folder using the link on the left pane. You should now have a file named arduino-1.8.13-linux64.tar.xz , with the “1.8.13” perhaps replaced with a newer version number.

Right-click on the file and select Open with Archive Manager. The Archive Manager, as its name implies, is a utility for working with archived files.

Arduino IDE extract

It will take a couple of seconds for the Archive Manager to read the file, after which it will display the contents – in this case, a folder containing the Arduino IDE installation files.

Click the Extract button, which will extract the folder and its contents to your Downloads folder.

Close the Archive Manager and go back into your Files application. Look for the folder that the Archive manager just created, it will be named something like arduino-1.8.13.

Right-click inside the Downloads folder (NOT the archive file or new folder) and select “Open in Terminal” from the list of options. The Terminal will open and you’ll note that you’re in the Downloads folder.

While we could leave the extracted folder inside our Downloads folder it really isn’t a good idea, as it could easily be deleted. It would be better if we moved it to a safe location, and in Linux that usually means the opt folder.

Arduino IDE move files

You’ll need to use the command line to move the folder, as you require super-user permissions to write into the opt folder. Make the move as follows:

(remember to change the version number if you have a newer version of the IDE)

Now change into the new folder inside the opt folder:

Type “ls” and press Enter, this will list the files in the folder you are in. One of them is, this is the installer program.

Arduino IDE change folder

At the command prompt type the following and then press Enter:

(don’t omit the period at the beginning of the command).

Arduino IDE Installation

The installer will launch. Follow the prompts and install the Arduino IDE.

Once the IDE has been installed you can look for the icon in the Show Applications window and add it to your Dock favorites.

Fix USB Port Permissions

After you install the Arduino IDE you’ll want to test it out, and the easiest way is to just load a simple sketch to an Arduino board and see if it works.

Grab an Arduino board and connect it to a USB port on your new workstation.

Now fire up the old faithful Blink Sketch. Since most Arduino boards come running Blink right from the factory it’s probably a good idea to modify the timing somewhat so that you can confirm your “modified Blink” was truly loaded to the Arduino. So change the time value from 1000 to something else – 300 for a fast blink or 3000 for a lazy blink!

Upload the modified Blink sketch to your Arduino. Chances are it will fail and you’ll have an error message.

Arduino IDE permissions error

The upload fails because your Linux account does not have sufficient permissions to use the serial USB port. Let me show you how to fix this!

First, you need to understand that there are actually two types of serial connections used by Arduino boards, the type used depends upon the type of serial driver the board uses. Different Arduino Unos have different drivers.

In the error message you received in the Arduino IDE a port name was specified, it will either look like “ACM0” or “USB1”. It’s the ”ACM” and “USB” that determines the type of serial chip your board is using, the number that follows may be different.

Armed with that knowledge, open a Terminal (and keep the Arduino plugged into the USB port).

If your error message specified insufficient permissions to an “ACM” port then type the following:

Otherwise, if it specified a “USB” port then type this:

Either way, you will get back a response, something like this:

crw-rw—- 1 root dialout 166, 0 Dec 7 16:57 /dev/ttyACM0

The letters at the beginning of this response indicate the file permissions for this port, but you don’t really need to be concerned about that. What you really want is to get the name of the Linux Group that the port belongs to, and in this example, it is “dialout”.

You’ll probably get “dialout” as a result as well, but it is best to check.

Arduino IDE set USB Permissions

Now in the Terminal type the following, replacing “username” with your own username.

This will add you to the “dialout” group. If you received a different result in the previous test then modify the command accordingly.

For the change to take effect you’ll need to logout and login again, or you can just reboot.

Now try and use the Arduino IDE to upload the modified Blink sketch. You should find that you are able to upload your changes. Try a few different boards if you have them to make sure it is working on all of them.

The Arduino IDE is now working on your new developer’s workstation!

Visual Studio – PlatformIO


Another very popular IDE for working with microcontrollers is PlatformIO.

Platform I/O is actually a plugin that extends the functionality of another very popular development environment, Microsoft’s Visual Studio Code.

Although most of us associate Microsoft with commercial products that run (mostly) on Windows, Visual Studio Code is an open-source product that runs on Windows, Mac OSX, and Linux.

Install Visual Studio Code

We begin by installing Visual Studio Code.

Python Virtual Environment Install

Before we do that we will want to install the Python3 Virtual Environment, as PlatformIO will require this. Open a Terminal and type the following:

Now we can begin the installation of Visual Studio Code.

There are a couple of methods of installing Visual Studio Code on Linux, but the easiest is to install the Snap package. By installing using this method your build will be kept up-to-date with regular updates that you’ll be prompted to install.

Visual Studio Code Install

Installation using Snap is really simple, open your Terminal and type the following:

Once you have it installed, open the Show Applications window and look for the VS Code icon, probably near the end as the icons are arranged alphabetically. You’ll want to add the link to your favorites.

Now open up Visual Studio Code and get ready to install PlatformIO

Install PlatformIO

PlatformIO is available as a package for Visual Studio Code. You will be using the Visual Studio Package Manager to install it:

PlatformIO IDE Install

  • Click the Extensions icon on the left panel (it’s the bottom icon)
  • Search for “platformio ide”.
  • The PlatformIO IDE for VS Code extension will display.
  • Click Install to add the extension to Visual Studio Code

And this will install PlatformIO on your new workstation.

PlatformIO Welcome Screen

Python IDE’s

There are a number of IDEs you can use if you’re programming in Python, including the Visual Studio IDE you installed to run PlatformIO.

Here are a couple of others you might want to try:



PyCharm is a very popular Python IDE that comes in Professional, Educational, and Community editions. The Community Edition is free, while the Professional one is paid software with several advanced features and the Educational one requires a special license to use.

There are two ways to install PyCharm – from the Snap Store and by downloading the latest version and installing it at the command line.

In this instance, I would recommend using the Snap Store, as it is maintained with the latest stable version of PyCharm and will be updated in your standard Ubuntu updates.

PyCharm Install

The Snap Store method is quite simple (it generally is). You can install the Community PyCharm with this line:

Once the PyCharm files have finished installing the PyCharm setup utility will open.

The utility starts by having you accept a license agreement, then it allows you to choose a desktop theme and create a “Launcher Script”.

Once the Pycharm Setup utility is finished you can start PyCharm and begin working on a new Python project. You can also install some plugins if you wish.

PyCharm IDE

PyCharm also has some built-in “learning projects” that can assist you in learning to use the IDE

Thonny IDE

Another popular and much simpler IDE for Python is the Thonny IDE.

This is an ideal IDE for Python beginners, and if you have dabbled with Python on the Raspberry Pi then it’s the same IDE you are used to there.

Although you can use the Ubuntu Software application to install Thonny IDE you are better off building the package and installing it yourself, as the IDE in the Ubuntu Software application is not the latest release.

Building and installing Thonny IDE is quite easy. Enter the following command in your Terminal:

This will download, build, and install Thonny IDE all in one shot.

After the installer is finished you’ll need to press Enter to close it and go back to the command line. Now open the Show Applications window and look for Thonny IDE. You can add the icon to your Dock if you wish.

Install Text Editors & File Management Tools

Working with code really means working with text files. Sometimes lots of text files. This group of programs will assist you in editing, comparing, and synchronizing text files.

Install Geany


There are many text editors available for Linux, and we have already added Gedit to our dock. But Gedit is a very simple text editor and it lacks many features that a developer would use when creating code files.

Selecting a proper text editor is a bit like selecting a web browser, your personal tastes and preferences really come into play as most of them do the same thing.

My “go-to text editor” is Geany. I like Geany for a number of reasons, not the least being that it is available for Mac, Windows, and Linux so I can move from computer to computer and use the same software. I also like how it keeps track of variables and how it highlights code in color, making it easier to spot errors.

Geany Installation

Installing Geany is very simple. Open the Terminal and type the following:

I said it was simple!

Now go to your Show Applications window and look for the yellow Geany Icon. Give Geany a try, I think you’ll agree that it’s a vast improvement over Gedit!

Geany Editor

Install Meld

Meld is a “visual diff and merge tool” according to their website, and that’s a pretty good definition of this useful utility.

Meld lets you compare the contents of two files (or two folders) to see what the difference between them is. It also lets you merge those differences manually.

It’s perfect for comparing two versions of the same code, to see what has been changed between them. It is also useful if you are working with a code repository and some of your code gets “out of sync”.

Meld has been packaged for most Linux distributions and the best way to install the latest stable version is to use the package manager that comes with your OS.

In Ubuntu, that means opening up the Ubuntu Software application and searching for “meld”. Once found simply use the Install button to install it.

Meld Installation

An alternate method of installing meld is to use the command line:

After you use Meld a few times you’ll see how valuable it can be, so you’ll likely want to add it to your Toolbar for easy access.

Meld file comparison

Install Balena Etcher


You probably used Etcher on another computer to create your Ubuntu Linux installation USB stick, so you are familiar with it. Etcher definitely deserves a place on your new workstation, especially if you do a lot of work with Single Board Computers (SBCs) like the Raspberry Pi.

There are a couple of ways to install Etcher.

The standard way to install Etcher is to use the “AppImage package” that you can download directly from the Etcher website. An AppImage package is a package that will run on just about any distribution of Linux, however, in order to run it, you need to manually give it permission to run first.

Another way is to add the Etcher repository to your Linux installation, and then install Etcher in the standard “apt install” fashion.

The advantage of adding the repository is that Etcher will automatically get updated whenever you run an update on your system. So although it requires more than one step I think it’s worth the (small) extra effort.

Etcher Repository Installation

The first step is to add the repository to your system. Open a Terminal and type the following:

Another way of adding the repository is to open the Software & Updates application and navigate to the Other Software tab. You can add the following entry:

deb stable etcher

Either method works just as well, and you only need to perform one of them.

Etcher Keyserver

Next, you need to add a Repository Key, which provides a signature so that Ubuntu can verify that this is truly the real repository and not one that is trying to spoof it. Ad the key as follows:

Next, we need to do an Update, so that Ubuntu can include our new repository:

Finally, we can install Etcher.

Etcher Installation

After the installation finishes, you will find a Balena Etcher icon in your Show Applications window.

Git File Management

As a developer, you will likely want to make use of GitHub or another similar file repository to exchange and synchronize code files.

You can do all of this from the Linux command line, however, many developers prefer the convenience of a GUI. And there are several to choose from, however many of them are paid products.

The GitHub Desktop, which is my personal favorite GUI for working with GitHub, is only available for Windows and Mac OSX, so sadly it’s not an option.

There are, however, a few good choices for a free open-source Git manager for Linux. I’m going to list a few of them here, you may want to try them out and see which one is more to your liking.


GitG is a GUI client for the GNOME desktop that lets you work with Git repositories.

You can easily install GitG as it is in the Ubuntu Software application – just search for GitG. Click Install to add this application to your workstation.

GitG Installation

This is a fairly basic Git client, but it may be exactly what you’re looking for.

Git Cola

This is a free GUI for Git that is built with Python, and it has become very popular.

While there is a version of Git Cola in the Ubuntu Software application it is not the latest version, at least it wasn’t when I checked it out. You are better off installing it from the command line.

GitCola Installation

Open your Terminal and type the following:

This will run the installation package and will install GitCola on your new Linux workstation.

You will see two icons for Git Cola in the Show Applications window.

  • Git Cola – The actual Git Cola repository manager.
  • Git Dag – A utility that reads the Git log files and displays historical changes

The GitCola interface is fairly simplistic, but it gets the job done and the price is certainly right!

GitKraken & SmartGit

These have become two of the most popular Git clients for Linux. Both are commercial products, but both of them also have a “freemium” plan that lets you use a reduced-feature version for free.

If you’d like to use one of these clients here are the links to their sites, where you’ll find instructions for installing them.

GitKraken GUI Client

SmartGit from Syntevo

Install Communications & Network Tools

Communications and Network tools have become very important, especially when constructing IoT or remote sensing and surveillance devices.

Here are a few you should have on your developer’s workstation.

Install FileZilla


If you ever work with a web server or file server then you’ll likely require an FTP program. FTP, or File Transfer Protocol, is the standard method used to send data to and from servers on the Internet, as well as on your own Intranet.

These days SFTP, or Secure File Transfer Protocol, is more popular, as it exchanges data in an encrypted fashion.

There are many FTP utilities available, and one of the most popular is Fiilezilla. It is available for all operating systems and can be installed from the command line.

FileZilla Installation

If you have Ubuntu 20.04 then this should be all you need to do to add Filezilla to your workstation:

If you are on an older version of Ubuntu or another distribution of Linux then you may need to add a repository before you can install Filezilla. Here is one you can try:

Once installed you’ll see the Filezilla icon in your “Show Applications” window, and you can launch it from there. It’s a very stable and well-polished utility that has everything you should require from an SFTP and FTP client.

FileZilla GUI

Install XTerm


A Terminal application emulates one or more popular data terminals, such as the DEC VT102 or VT420 and Tektronix 4014 devices.

A very common terminal application that runs under Windows is PuTTY. It’s the go-to utility for working on the command-line of remote servers.

You actually can install PuTTY on Linux if you use WINE, the Windows Emulator for Linux. PuTTY is one of those utilities that actually runs quite well under WINE, so if you are hooked on PuTTY then you can give this a try.

Another choice is to run a native terminal application. Obviously, the built-in Terminal would be your first choice, but for those who want to work with remote systems, you might want to give XTerm a try.

XTerm Installation

XTerm may be installed at the command line as follows:

Once installed you can search for the XTerm icon in the “Show Applications” window and run it from there.

Incidentally, when you first start XTerm you’ll observe that the screen is pretty bare, and there don’t seem to be any controls or options. In order to bring up the options menu you’ll need to do the following:

  • Hold down the Ctrl key and left-click to get the main terminal menu.
  • Hold down the Ctrl key and right-click to get the font menu.

I found the font to be extremely small and ended up setting mine to “huge”.

Install Angry IP Scanner

Angry IP Scanner

This next utility has a bit of a strange name, and I’m not too sure what all the anger is all about.

The Angry IP Scanner scans your IP network and reports back all of the details it can find regarding the attached devices. You’ll see all of your computers, tablets, phones, computer peripherals, Smart TVs, and IoT devices – their hostname and their current IP address.

This is very handy when installing products like MotionEye OS, which boot up using DHCP (Dynamic Host Control Protocol) and grab an address. With the Angry IP Scanner, you can now find that magic address.

Angry IP Scanner Download

So don’t get angry, just go to the Angry IP Scanner download page and download the 64-bit DEB Package to get the latest version.

Once you have it download just click on it to run the Ubuntu Software Installer, which will walk you through the installation.

Angry IP Scanner Installation

After the installation is completed find the icon and run the scanner and wait while it scans your network. You can repeat the scan any time you want to.

Angry IP Scanner Demo

Install Schematic & PCB Tools

Advanced experimenters may wish to design printed circuit boards for their projects. There is a lot of software designed to do this, both commercial and open source.

The choice of a PCB editor is a personal thing and it will usually involve factors like your previous experience and, to some degree, the requirements of the PCB manufacturer whom you are dealing with.

Here are a couple of editors you can try if you haven’t committed to one yet.

Install KiCad


KiCad is one of the most popular open-source PCB editors, and it’s available for Mac OSX, Windows, and a variety of Linux distributions including Ubuntu.

KiCad also includes an integrated schematic editor called Eeschema.

KiCad Install Repository

To install KiCad you’ll need to add another repository to your software sources. Open a Terminal and enter the following:

Next, we do an update to refresh our queue to include the new repository:

And now we can install KiCad! This command will install KiCad, along with all of the recommended extras:

Please note that the above instructions were current as of December 2020, you may want to visit the KiCad download page to see if there is a more recent version. The installation steps will be the same, but the version number will be different.

KiCad Installation

After installation, you can find the KiCad icon in the Show Applications window. Click on it and start using KiCad!

Install EasyEDA


Another popular PCB CAD program is EasyEDA. This program can be run in two modes:

  • On your desktop, Windows, Mac, and Linux are all supported.
  • Using an Online editor.

You can edit the same project online as you do on your desktop, and as you’re saving a copy online you have the security of an offsite backup of your work.

EasyEDA’s PCB editor is just part of an entire infrastructure that lets you create printed circuit board designs and then have actual PCBs created and mailed to you.

EasyEDA is free to use, however, there are also paid plans that offer support and that remove the advertising that you need to put up with on the free version. But feature-wise the free version isn’t really crippled in any major way, and you can use it for either personal or commercial projects.

EasyEDA Download Page

Visit the EasyEDA download page and download the 64-bit Linux version of the program. Now go into your file manager (nemo) and navigate to the Downloads folder, where you should see the file you just downloaded.

Right-click on the file and open it in the Archive Manager, just as you did with the Arduino installation files. When the archive is open click the Extract button to extract the files.

EasyEDA Installation

While still in your Downloads folder open a Terminal session by right-clicking and selecting the Open in Terminal option. In the terminal type the following:

The EasyEDA installation program will run, it will extract files and move them into a new folder inside the /opt folder.

After that, you can open EasyEDA. You will need to log in with an account, which you can set up on the EasyEDA website.


One nice thing about EasyEDA is that because your account is synchronized with their website you can work on your projects both online and on your local desktop, this also opens up the possibility of working on the projects on the desktop client on another computer.

Install Graphics & Media Tools

An important part of creating projects is documenting them so that other people can share your work, which is exactly what I do here in the DroneBot Workshop.

The final set of applications we’ll be installing on our Developers Workstation are programs that will help you document your work through the creation of videos, images and animated GIF files.

Install VLC

VLC Media

VLC Media Player is a full-featured media player that can also record your desktop or take snapshots from videos. It can handle a wide range of video formats, as well as audio CDs and DVDs.

This makes VLC useful not only for playing media but for recording it as well.

VLC Media Installation

The best way to install VLC is to use the Snapcraft Store, as this will ensure that you always have the latest stable release. Open your Terminal and type the following:

After installation, you can find the VLC icon using Show Applications.

When you first run VLC you’ll need to decide if you want to give VLC consent to go to the internet to get metadata for the videos and audio files you play. This is optional, VLC does not share your data with anyone otherwise.

And after that, you’re all set and ready to enjoy VLC Media Player!

Install Shutter


Shutter is an application that I have been using for years, it is my favorite way of taking screenshots. You can select between the full screen, a specific window, or a manually-selected area to take a screenshot of.

Shutter also has a built-in editor that will allow you to add text and symbols to the screenshots you have taken. You can save your work in a variety of formats.

Shutter Install - Repository

Unfortunately, the development of Shutter seems to have been stalled, and Ubuntu took it out of its distribution channel a few versions back. But you can still install it using a third-party repository, which you can add by opening a Terminal and typing the following:

After you add the repository it’s a good idea to do an update, then you can install Shutter.

And this should install Shutter. As always, you’ll find its icon using Show Applications.

Shutter Installation

There is an addition to Shutter to allow for the capturing of a full web page (including the part below your screen fold). You can install it as follows:

After installation, this will add a “web’ item to the treaty icon. Clicking it will prompt you to add the hURL of the page you want to take a snapshot of,.

Install Peek

The last application we are going to install, at least for now, is a small application that lets you record your screen as an animated GIF. This can be extremely useful for producing dynamic documentation.

Like most screen recorders, Peek lets you highlight an area of your screen and record the action. The result is then saved as an animated GIF.

Peek Install Repository

To install Peek on the workstation we will need to add another repository, as follows:

After we add the repository we need to perform an update, as we have many times before (although with Ubuntu 20.04 this isn’t really necessary anymore):

And finally, we can perform the Peek installation:

Peek Install

Once you have performed the installation you’ll find Peek inside your Show Applications window. Give it a test by making a quick recording, it uses a simple and intuitive GUI that makes creating animated GIFS a breeze.


If you made it to the end of this article you deserve a medal, as it’s really more like a small book! And while I can’t actually send you a prize I do hope that you have been rewarded with a functional Developers Workstation that you can use to build amazing devices.

Make sure you download the Cheat Sheet, it will make setting up your new (or old) workstation a lot easier.

Of course, we have really only covered some of the many applications you can add to your workstation.  There are a myriad of other programs that you might find useful in your work with microcontrollers and microcomputers, but the applications we have installed will at least get you started.

Enjoy your new Linux workstation!


Parts List

Here are some components that you might need to complete the experiments in this article. Please note that some of these links may be affiliate links, and the DroneBot Workshop may receive a commission on your purchases. This does not increase the cost to you and is a method of supporting this ad-free website.




Cheat Sheet

Cheat Sheet & PDF – Get the free “cheat sheet” text file with all of the command-line instructions and download URLs. Also includes a PDF version of this article.

Linux Downloads

Ubuntu Linux – The download page to get a copy of the Ubuntu Linux image.

Linux Mint – Download Linux Mint.

MX Linux – A page listing repositories and sources for downloading MX Linux.

Manjaro Linux – The download page for Manjaro Linux, with an intro video.

Debian – Listing of options for obtaining Debian Linux.

Customizations & Included Software

ChaseApp – An excellent “personal” search tool, available for Linux, Windows & Mac OSX 

Integrated Development Environments

Arduino IDE – Download the Arduino IDE or check the current version number.

Visual Studio Code – Download the Visual Studio Code IDE from Microsoft.

PlatformIO Installation Guide – From the PlatformIO documentation.

PyCharm Download – Download the latest version of PyCharm Python  IDE from Jetbrains.

Thonny IDE – A simple Python IDE for beginners.

Editors and File Management Tools

Geany – Programmers text editor, available for Linux, Windows & Mac OSX.

Meld – A file comparison tool.

Balena Etcher – An essential utility for burning images to a USB drive and to SD cards.

GitG – Git repository management tool.

Git Cola – Another tool for working with Git.

Communications Tools

FileZilla – Download the FileZilla FTP & SFTP utility.

Xterm – A terminal emulator for Linux.

Angry IP Scanner – Download the scanner software.

Schematic & PCB Tools

KiCad Download – Download KiCad for a variety of operating systems.

EasyEDA Download – Download the desktop client for EasyEDA.

Graphics & Media Tools

VLC Media – Download the VLC Media application to play and record video.

Shutter – A screenshot utility, now community-supported.

Peek – A utility to capture your screen as an animated GIF.


Build a Developers Linux Workstation
Build a Developers Linux Workstation
Article Name
Build a Developers Linux Workstation
The complete guide to assembling and configuring a workstation suitable for microcontroller developers. Includes a downloadable "cheat sheet" to simplify the task, as well as a detailed video.
Publisher Name
DroneBot Workshop
Publisher Logo
Tagged on:
Notify of

Inline Feedbacks
View all comments
Anibal Rodriguez
3 years ago

I think this is a very worthwhile contribution to the maker/developer community. Ironically just yesterday I posted on DroneBot Workshop an endorsement for EasyEDA after studying it for a couple of days. I found EasyEDA a while back when it was somewhat bare bones but after coming across it this week I found it to be something I would like to learn and add to my tool box. The Linux Work Station appeals to me but I wonder if I can use the Nvidia Jetson AI instead of the Nuc. NUC is a bit out of my price range @… Read more »

3 years ago

I had great success installing everything on an external HDD of a Mac Mini. Yes that was a Ubuntu 20.xx LTS on external USB2,HDD. Incidental, it was a bit slow starting the apps, but once they hit RAM it was fine.
Good luck.

Last edited 3 years ago by Deano
3 years ago
Reply to  Deano

Pastries are one of the favourites and cherished items from bakery and confectionery. We all like to have delicious pastries regularly. Pastries have different flavours and tastes. Children with fragile teeth bite cakes with the elderly. In school, college or office, many people noticed their pastry, overcoming their sudden desire for sweets. Pastries are presented in different ways, such as soft, open-able Custom Boxes with window and in pastry boxes. Packaging printing brings you the extra sweet ideas to get your pastry straight into your eyes

Dariusz Dębicki
3 years ago

I am using ArcoLinux as my daily driver and I think it is much easier to set up all the programs mentioned in the video in an Arch-based distro. There is no need to use snap. All programs are either on the official repository or in the AUR.
Many thanks for this comprehensive video/article. There is always something new I learn from your content. This time it was EasyEDA. I wish all tutorials were done as well as yours.
Stay safe and keep up doing more fantastic videos.

Ed Marks
3 years ago

This is AWESOME! (at least I’m hoping it’s going to be). I have a old windows machine I bought for $25 which is working fine, but I really bought it to spin up as a Linux machine to experiment with. Looking quickly through this article, it looks like it’s going to be the perfect reference document for me to walk through the process.

3 years ago

About two weeks ago I started putting together a very similar cheat sheet for configuring a Linux desktop based on Debian (Raspberry Pi) on a former Win platform. This will be so helpful as it’s the exact same purpose . . . just a different starting point.

And I have to say, about the only problem I see with your articles has absolutely nothing to do with the length! It’s the litany of rabbit holes you open up when you bring up subjects I want to research . . . which are MANY!! 🙂

Thanks VERY much for your efforts!!

steve reed
3 years ago

great idea thanks but too expensive for me.

Ed Marks
3 years ago
Reply to  steve reed

I’m going with a lower end machine I got from FB Marketplace (similar other places). More to experiment/play with than for a “powerhouse” machine for everyday use.

Frank Segui
3 years ago

I like the longer more detail video. The resource page with the cheat sheet is very helpful. Being new to Linux, I enjoy finding new and useful applications.

Jim Meek
3 years ago

Hi, I spent several hours recently using this as a guide to add utility to my Linux workstation. In my case, an HP G6 laptop upgraded with a 500GB SSD. I have a few problems because my choice of OS is Linux Mint(20). My biggest hurdle is with XKill, which is not available for Mint20. Just this AM I was using Meld to compare two software versions, one of which works and one that doesnot. Very enlightening. I use the laptop primarily for programming Parallax Propeller chips. My mcp of choice because of its multi core archetecture. Eight cores that… Read more »

Last edited 3 years ago by Jim Meek
Gary Hutton
3 years ago

While installing arduino ide on linux there is another script file that can be used to help with generic UNO boards. Have you ever used ‘’?

James Forbes
3 years ago

This will keep me busy for hours as I check & double check my home development environment which consists of an old Dell laptop with Ubuntu, RPi, Arduino and ESP8266 boards. Oh what fun!

James Bearss
3 years ago

DBW, I was wondering if maybe this could be in a PDF form, there’s a lot of information here that I would like to read offline. it’s a great presentation! I was thinking it was smaller but there so much here! I have a NUC that I am currently not using that I would like to convert to a Linux work station I just haven’t read everything here.

3 years ago
Reply to  James Bearss

There is literally a link at the top Resources box for a PDF version of the article…

A Tsang
3 years ago

Thanks for the detailed walkthrough for the install of Linux and developer tools. I just repurposed a ’09 iMac for this purpose. I was using MacOS for Arduino IDE and Circuit Python but wanted to learn to use Linux as well. The initial install of Ubuntu went well but the OS crashed after 4 days and I am onto the second fresh install of the OS. The second install was not the same as the first with the wifi not being recognized and multiple errors when the developer tools were reinstalled. I guess this is the fun of open source… Read more »

3 years ago

Awesome, I have installed Ubuntu with all your suggestions on my old HP PC (AMD 64) dual boot, and my ASUS laptop (Celeron 64) that originally ran Vista.It needed to be cleaned up so I installed Ubuntu as stand alone OS. I am always looking for alternatives to big tech (Microsoft, Google, etc.). Great Tutorial and I was able to follow with no difficulty. You are extremely thorough and right to the point which I can relate to. Thanks

3 years ago

So NewEgg has two versions of the NUC 10 one has a larger case. I can’t distinguish any difference based on their posted specs. Which did you use and do you know the difference by chance?

Fernando de Souza
3 years ago

Nice work sir!

Al DeFreitas
3 years ago

Wow! Thank you so much for putting this all together. For years, I’ve wanted to teach myself Linux, but always put it off because of the effort to get a working machine, figure out how to download and install Linux, and then figure out what I was doing. I had a spare laptop laying around so I followed your directions, and now I’m ready to hit the ground running with a fully loaded Linux work station!

3 years ago

Hi, Thank you very much for this detailed article! I have been thinking of building a new development computer for a long time, using Linux but you finally get me going 😉 I actually also bought a NUC for this project and it took me like 45 min to install everything when following your instructions (I didn’t install everything thought). My NUC is an I5 8th gen with 32GB of RAM and it’s really fast. I went for the 8th gen since the graphic performance (GPU) seams to be a little better then on the 10th gen (strange actually) and… Read more »

3 years ago

Though I only scanned through the article, I must say I am most impressed with the width and depth of it. It includes a lot of very powerful tools and applications. Learning all of them will take quite some time, though it does not have to be done all at once. I am a Debian and MX Linux user mostly. I do lots with Raspberry Pi’s and Arduino’s of all flavors. I have several older laptops and desktops for my enjoyment. Thanks again.

3 years ago

Thanks, I enjoy very informative 🙂 I use Debian

José Fonseca
3 years ago

Genial. SUPER. For the first time I’ve been able to work with Linux. THANK YOU.

3 years ago

 Microsoft Office simply helps to improve work productivity and office tasks. The first version of Microsoft office contains applications like Microsoft Word, Microsoft Excel, Microsoft Access, Microsoft Publisher, Microsoft PowerPoint, Microsoft One Note, Microsoft outlook. Each Application has a role. Microsoft Office is assembled in many versions targeted with different computing environments. It comes when we need to carry various professional tasks. Microsoft Office is available in different versions such as Office 2007, Office 2010, Office 2016, Office 2013. Microsoft Office is available for iPhone, Android devices for free. Microsoft Office is used by every individual whether for business or… Read more »

3 years ago

The “Drone Bot Workshop” is the place where users are interested in working with Arduino, Electronics, Robotics, Quadcopters, and other high-tech fun things.

3 years ago

E-Commerce packaging boxes, are brilliant for any type of gift, tiny accessories or pre-wrapped truffles or chocolates. ecommerce packaging is ideal to make your item stand out.

3 years ago

Come across your excellent post while trying to gather information to build a computer. This is my first time building a computer. From your part list, am I correct to understand that the NUC is the only item that we have to ensure that i it supports Linux? Your part list below for reference:    Intel NUC 10 with Intel i7 processor.    1 TB Samsung EVO V-NAND SSD – this is an M.2 SSD used to hold the OS.    1 TB Western Digital Blue SSD – this is a SATA SSD used as a work drive    2 x 32GB Vengeance DDR4… Read more »

3 years ago

Great job!! Can you recommend a schematic tool that shows mcus like esp32 like the one you use?

3 years ago

I have Ubuntu 20.04 on my desktop, and I’m setting up to program the Pi Pico, so your article was very useful, especially with the cheetsheet Thankyou

3 years ago


Pastries are one of the favourites and cherished items from bakery and confectionery. We all like to have delicious pastries regularly. Pastries have different flavours and tastes. Children with fragile teeth bite cakes with the elderly. In school, college or office, many people noticed their pastry, overcoming their sudden desire for sweets. Pastries are presented in different ways, such as soft, open-able Custom Boxes with window and in pastry boxes. Packaging printing brings you the extra sweet ideas to get your pastry straight into your eyes

Ron Kirksey
2 years ago

How much does something like this cost to build?

2 years ago
Reply to  Ron Kirksey

It WOnt Cost you much if you have proper knowledge . Time is Money 🙂

Last edited 2 years ago by Smuyel
2 years ago

I really appreciated both the video and the article. The quality of the material is outstanding. I just recycled and hold PC and installed Ubuntu 20.04. However, I can’t get the PDF and cheat sheet, the link doesn’t work. Am I doing something wrong? Is there anywhere else I can get the documents? Thanks for your time.

J.H. van Kesteren
2 years ago

Nice workshop, but I get a error when I click on the Cheat Code link

“This site can’t be reached” ?


Is the link broken?

Gr. Jan-Henk

Kamal Gendi
2 years ago

I installed all the suggested applications on an HP minitower for the purpose of switching my main computer away from my current Windows 10.

I managed to redraw an Altium schematic that I had using KiCAD but when I went back to do some editing, the project was not under File | Open recent and I had to search for it. Any idea on how to fix this?

2 years ago


first of all congrats on the quality of the workshop guide, very helpful! It seems that Balena have changed the PPA provider to Cloudsmith and the repository needs to be changed accordingly, otherwise you’ll get an error (Failed to fetch 403 Forbidden [IP: 443] etc) during install or updating, more details here. Essentially, this command should be run instead:

curl -1sLf ‘’ | sudo -E bash

Please not you may have to install curl first with ‘sudo apt install curl’ first. Hopefully this saves someone a bit of time googling 🙂


2 years ago

Its really a great article.

2 years ago

I’ve watched a few of his videos and as a. Newbie to Linux , it’s very understandable , im trying to learn all i about programming , I just subscribed to the YouTube channel , so if I ask any stupid questions , plz forgive me , I love science and engineering .

Bill Stoner
2 years ago

Etcher failed to install on Ubuntu22.04. sudo apt update could find repository.

W: Failed to fetch 502 Bad Gateway [IP: 443]

2 years ago
Reply to  Bill Stoner

— PPA changed in May 2021
install curl if you don’t have it yet as follows:
sudo apt install curl
then run below script that will automatically fix your rep:

sudo curl -1sLf \
‘’ \
| sudo -E bash

Jeffrey White
2 years ago

Great Stuff! Thorough and beyond…

2 years ago

Thanks for an excellent application note, All students will benefit from the experience of building a Linux Work Station, Have you thought about getting involved with ROS and Hoover board Robots?

1 year ago

Many thanks for this comprehensive video/article. There is always something new I learn from your content. This time it was EasyEDA.
small cars for sale

1 year ago

Great tips

1 year ago

Great article… just built my own on an old MacBook Pro…

Mike Halliday
1 year ago

Thank you for your excellent YouTube videos and the corresponding articles. I’m exploring Linux and Arduino IDE 2. Is the process for a manual install essentially the same as the IDE1.x. I need to sort out serial ports for working with (either IDE) and STM32 processors. I’ve installed ST STLINK V2 and Cube software but can’t get it working. As a long-in-the-tooth Windows user aka newbie to Linux, do you have any pointers as to what might work?

1 year ago
Reply to  Mike Halliday

This is a great article thanks for sharing this informative information. I will visit your blog regularly for the latest post. I will visit your blog regularly for The newest post.

1 year ago
Reply to  mim

I am really thankful to you for giving blog commenting sites Asimax Forte Alprazolam 1MG I will definitely be coming back here more often. Thanks for taking the time to share this fantastic post with us.

1 year ago

Im impressed, I have to admit. Truly rarely should i encounter a blog thats both educative and entertaining, and without a doubt,
you might have hit the nail around the head. Your concept is outstanding; the catch is something not enough consumers are speaking
intelligently about
. Were delighted i stumbled across this inside my find some thing regarding this.

1 year ago
Reply to  shahin

The advancement of technology has positively influenced the growth of businesses 
all over the planet. With the help of modern technologies like websites and mobile applications, 
every firm can sell its products or services online without hassle. We, QuikieApps,<a href=””>Federal Premium Gold Medal Berger</a>
 have acquired recognition and reputation through the reliance of our respected clients 
as the top Web development company in Bangalore, India, USA, UK, Dubai. Adapting the dynamic
 technology of the web and mobile applications <a href=””>Federal Varmint Ammunition 6.5 Creedmoor</a>
 is the first step to success in this modish and competitive world.

Tracy Berge
1 year ago

Honestly thank you so much for your page. I’ve perused all kinds of topics on your channel, and I always thoroughly enjoy all of your content

1 year ago

ChaseApp is not longer called ChaseApp it is now called Unleash. Found at

David C Clifford
1 year ago

Very nice work on your YouTube videos and this site. I came here to find this topic “” and discovered a nice sign that you were upgrading youe site and don’t worry about the burps during the code changes. Nice!

Dave Clifford Aurura, CO (Retired IBMer who developed software in assembly language using punchcards (mid 1970s) before IDEs.[see if the young ones understand what/how to use a punch card]!)

1 year ago

Nice post. I learn something much harder on distinct blogs everyday.
 Most commonly it is stimulating to see content off their writers and employ a little
 something from their site. Id would rather use some while using content on litto disposable not hitting</a> my weblog whether or not you do not mind. Natually Ill provide a link on your web blog. 
Thanks for sharing.

4 months ago

As a long time Windows user, I, like many, hate the new versions that come out every few years, with different user interfaces that need to be learnt, features removed, unwanted features added, etc., etc. and now W11 won’t even run on my perfectly good P.C. So from time to time I have a go at transferring to a full Linux version, (I do have a very old laptop that I put LinuxLite on about seven years ago that is used mainly for web browsing, and it works fine) but as soon as I try to do anything more than… Read more »