Linux WLAN general

Using the ODROID C2 as a WLAN Testing Tool – Part 3: Some Exploring and Installing wicd

Previous Articles in this series:

  1. Install & Preconfigure DietPi
  2. DietPi, First Boot

In the previous posts in this series I took a look at how I installed and configured DietPi on my ODROID C2.  I also went through the settings and some software packages that I wanted to install on the first boot.  I should re-iterate here that one of the goals of this series is not to blandly show the reader how to do things, but also to try and learn more about how a machine like this fits together.  So as I go along you may see me point out some things that have more to do with Linux or DietPi or other topics.  They may also seem obvious to you or not worth explicit mention.  I am doing this is in the spirit of sharing the totality what I learn along the way, so that you the reader may benefit.   I am also doing it so I can come back and read it later when I forget… (it happens more often than not!)

Initial Exploration

Right so, at this stage, you have booted your ODROID or other SBC (Single Board Computer) for the first time, you have logged in and you are now at the command prompt.  I am assuming you weren’t adventurous enough to add a desktop and you are simply booting into the standard command line.  You may still have the ODROID connected to your screen and keyboard, and that’s fine too.  Go ahead and login (if you haven’t already) and let’s take a look around.


You should be at the User@HostName~:# prompt.  Let’s have a look at our present working directory and a few other things…

root@Droid-01:~# pwd

Ok, so our home directory is /root.  Let’s go up to the top of the directory structure…

root@Droid-01:~# cd /
root@Droid-01:/# pwd
root@Droid-01:/# ls -a
. .. bin boot dev DietPi etc lib lost+found mnt opt proc root run sbin srv sys tmp usr var

Let’s go back to the home folder and have a look inside there…

root@Droid-01:/# cd
root@Droid-01:~# pwd
root@Droid-01:/# root@Droid-01:~# ls -al
total 10
drwxr-xr-x  4 root root 1024 Feb 25 17:29 .
drwxr-xr-x 20 root root 1024 Feb 25 16:58 ..
-rw-------  1 root root  212 Mar  3 23:24 .bash_history
-rw-r--r--  1 root root 3526 Feb 25 17:29 .bashrc
drwxr-xr-x  3 root root 1024 Feb 25 17:29 .config
drwxr-xr-x  2 root root 1024 Feb 25 17:29 .local
-rw-r--r--  1 root root  140 Feb 25 17:29 .profile

Neat OK, so we have a 1000 mile view of where we are and what we are dealing with (actually, at this point we really have no idea!)

DietPi Tools

One of the cool things that DietPi OS comes with is a set of menu based tools for configuring your SBC and for installing optimized versions of software.  Let’s go and find out where those are…

root@Droid-01:~# cd /
root@Droid-01:/# ls
bin boot dev DietPi etc lib lost+found mnt opt proc root run sbin srv sys tmp usr var
root@Droid-01:/# cd DietPi
root@Droid-01:/DietPi# ls
boot.ini config.txt dietpi dietpi.txt
root@Droid-01:/DietPi# cd dietpi
root@Droid-01:/DietPi/dietpi# ls
boot             dietpi-backup     dietpi-cleaner    dietpi-cpuinfo dietpi-drive_manager dietpi-letsencrypt dietpi-obtain_hw_model dietpi-ramlog   dietpi-survey finalise misc
conf             dietpi-banner     dietpi-cloudshell dietpi-cpu_set dietpi-funtime       dietpi-logclear    dietpi-process_tool    dietpi-services dietpi-sync   func
dietpi-autostart dietpi-bugreport  dietpi-config     dietpi-cron    dietpi-launcher      dietpi-morsecode   dietpi-ramdisk         dietpi-software dietpi-update login

The three main applications you will use are:

  • dietpi-launcher: A full menu for optimized software selection, HW config, autostart settings, cron jobs, management of external drives and updating dietpi
  • dietpi-software: Allows you to run configuration and select software for dietpi to install.  Also available in the dietpi-launcher menu.
  • dietpi-config: This allows hardware configuration changes and optimizations.  Also available in dietpi-launcher and dietpi-software menus.

Go ahead and try each of them, you will realize you’ve already used them to install other software during the first boot!

Pre-Installed Software

After the first boot and configuration, you should already have some network tools installed.  You should be able to use iftop, iptraf, iperf, mtr, nload and tcpdump.

You should also have access to some useful text editors, I only have Vim and Vim-Tiny installed (I don’t need both, I was just being greedy!)

If you want to check out what other executable programs are included in your DietPi system, use cd /bin to open the /bin directory and use the ls command to have a look what’s there.

root@Droid-01:~# cd /bin
root@Droid-01:/bin# ls -a
.       bzip2recover dash          fbset      ip         login       mount            ntfscat       pidof     setfacl    systemd-ask-password           udevadm         zdiff
..      bzless       date          fgconsole  journalctl loginctl    mountpoint       ntfscluster   ping      setfont    systemd-escape                 ulockmgr_server zegrep
bash    bzmore       dd            fgrep      kbd_mode   lowntfs-3g  mt               ntfscmp       ping6     setupcon   systemd-inhibit                umount          zfgrep
bunzip2 cat          df            findmnt    kill       ls          mt-gnu           ntfsfallocate ps        sh         systemd-machine-id-setup       uname           zforce
bzcat   chacl        dir           fuser      kmod       lsblk       mv               ntfsfix       pwd       sh.distrib systemd-notify                 uncompress      zgrep
bzcmp   chgrp        dmesg         fusermount less       lsmod       nano             ntfsinfo      rbash     sleep      systemd-tmpfiles               unicode_start   zless
bzdiff  chmod        dnsdomainname getfacl    lessecho   machinectl  netstat          ntfsls        readlink  ss         systemd-tty-ask-password-agent vdir            zmore
bzegrep chown        domainname    grep       lessfile   mkdir       nisdomainname    ntfsmove      rm        stty       tailf                          wdctl           znew
bzexe   chvt         dumpkeys      gunzip     lesskey    mknod       ntfs-3g          ntfstruncate  rmdir     su         tar                            which
bzfgrep con2fbmap    echo          gzexe      lesspipe   mktemp      ntfs-3g.probe    ntfswipe      rnano     sync       tempfile                       ypdomainname
bzgrep  cp           egrep         gzip       ln         modeline2fb ntfs-3g.secaudit open          run-parts systemctl  touch                          zcat
bzip2   cpio         false         hostname   loadkeys   more        ntfs-3g.usermap  openvt        sed       systemd    true                           zcmp

Of course, you can learn about these commands all by simply typing their name and –help at the end!

Installing New Software

The DietPi OS we are using is a stripped down variant of Debian OS and so it uses the apt-get command line interface for installing and managing software.  If you want to learn more about apt-get, simply type apt-get –help into your command line on your SBC.  We are going to be using apt-get to install some useful software packages on the ODROID

wicd & wicd curses

At this point in my installation, I want to start being able to connect to other types of networks and I want an easy way of configuring them.  Linux typically uses the wpa_supplicant program to act as a network connection controller / manager and it is a very powerful tool.  But there is a catch.  The wpa_supplicant software comes with two front end programs to allow you to manage your network connections.  The first, wpa_gui offers a graphical user interface that I assume should be eas(ier) to use, but I cannot test as it is not included in DietPi and besides, I am using the command line user interface exclusively at this point anyway.  The second front end program wpa_cli offers a command line user interface.  Don’t get me wrong,  wpa_cli does have a help file, but learning all those commands right now seems a little ambitious.  If you want to see what I mean try:

root@Droid-01:~# wpa_cli --help | less

The “less” command is a great tool for showing terminal output only one page at time!

Back to the point: easily changing my network settings with a wide array of choices and settings. ENTER wicd and wicd-curses!  The key part about wicd is that it supports both a fully featured console interface as well as a graphical user interface and it should work across almost all Linux distributions!  So let’s get this installed, the commands you will want to run are below!

root@Droid-01:~# apt-get install wicd
root@Droid-01:~# apt-get install wicd-curses

DING! All done, so let’s go and have a look shall we?  Let’s open the console interface:

root@Droid-01:~# wicd-curses

You will see something like this.

Notes: When you enter the prefs menu, you will need to use something for page up / page down to tab between high level menus, best to Google that for your keyboard layout!  I have also found that if you are accessing your SBC remotely via SSH, and you open up wicd-curses and start playing with the network connections you are quite likely to interrupt the ssh session.  This is seems like a good tool to use with a display, keyboard and mouse… (cue my disappointed face!)

With that limitation in mind, feel free to wander around and use the tool to scan for networks (use the Refresh function), you can also set various preferences and configurations for different connections.  Enjoy exploring! Interestingly enough in this setup, ODROID-1 is set to use WPA-Personal / AES and ROBROBSTATION is set to use WPA2-Personal / AES, but wicd reports both as WPA2 because they both use AES.   You will also notice that wicd also gives you the ability to select the bssid that you want to connect to! That is VERY useful indeed.

That’s all for now… 🙂

Linux WLAN general

Using the ODROID C2 as a WLAN Testing Tool – Part 2: DietPi, First Boot

In the Previous Post,  I went through the basic steps of installing DietPi on an SD Card / eMMC card using the MAC OS terminal and preparing the network settings for the first boot.  If you are reading this post, you should have DietPi installed on your eMMC / SD Card and it is time to boot your SBC for the first time (if you haven’t already).   As a reminder, I am using the ODROID-C2 and will just refer to it as the ODROID from now on.

When the ODROID completes its boot sequence, you will be presented with a login prompt.  Enter the default username and password.  The ODROID will now enter an auto install mode and pop up with a console menu titled “DIETPI- SOFTWARE”.  We are going to use this console to configure our machine before it boots for the first time and see if we can save some time on installing software later!

We will go through the following steps:

  1. Configure the DietPi OS (Display, Locale, Language, Root password, network options…)
  2. Select Software to be installed
  3. Configure other settings (SSH Server, File Server, Log System, Web Server)
  4. Install the System.

Configuration Tasks

Enter the “DietPi-Config” context (Feature-rich configuration tool for your device).  These are the basics that you may need to configure on your device!

Display Options

I am using a Dell SE2416H 16:9 widescreen display, with resolution set to 1920x1080p @60Hz.  The ODROID can happily handle anything up to a 4K display, so you should be covered here.

Language / Regional Options

  • Set the locale to your local language preference.  Spacebar allows you to select/deselect any given locale.  TAB will move you to the <Ok> button to complete your selection.  I set the system to use the following locales:
    • en_GB.UTF-8 UTF-8 (You MUST keep this locale selected!)
    • en_US.UTF-8 UTF-8
    • en_ZA.UTF-8 UTF-8
  • I set en_ZA.UTF-8 UTF-8 as the default locale for the system.
  • Now set the Time Zone of the System
  • Now set the Keyboard Language Setting (my settings below)
    • Keyboard Configuration: Generic 102-Key (Intl) PC
    • Keyboard Layout: English (US)
    • AltGr Key: default
    • Compose Key: no compose key

Security Options

  • Change your root password from “dietpi”
  • Change the Host Name

Network Options: Adapters

You can set your Ethernet and Wireless networking configuration here.


  • Plug in your Wi-Fi adapter (if it isn’t already plugged in)
  • Enable the Wi-Fi (if it isn’t already enabled)

Re enter the Wireless Network options menu: (my choices for my location in bold)

  • Set the country code: ZA
  • Mode: DHCP / Static
  • Select “Scan and Connect” to join a WPA / WEP capable network.
    • Enter the Passphrase
  • OR Manually Set Wireless Details
    • Enter the SSID
    • Enter the Passphrase

NOTE: Only WPA-Personal & WEP WLANs are supported at this point!

Apply your changes, wait to re-enter the menu, you should see the IP address of the wireless interface now along with the PHY rate and Signal Strength.  Exit the Wireless Network Options menu by using  the <back> button.

That’s it for “DietPi-Config”.

Software Optimized:

We aren’t going to add anything from this list just yet.

Software Additional:

Enter the “Software Additional” Context, scroll down to “Network Tools”

Network Tools:

We are going to install all of the available Network Tools. Why? Because you’d rather have it and not need it right??


This is a useful text interface tool that shows network traffic flows on a given interface.  It shows the amount of traffic in each direction for each pair of hosts whose traffic is flowing through the interface.

Check it out once you’re up and running by typing iftop –help at the command prompt.


IPTraf is an “IP networking Statistics Utility” and is actually supremely powerful if you are trying to get an understanding of what is happening on the network interfaces of your device.  It’s like a simple text based version of Wireshark available straight off the command line!  I am not going to spoil it, go and play with this.  Just shoo.. go on now…

Check it out once you’re up and running by typing iptraf at the command prompt.


IPerf, the venerable network throughput testing tool.  This is version 2.0.5 (08 Jul 2010).  Check it out once you’re up and running by typing iperf –help at the command prompt.


This is a useful little tool that replace the ping tool and traceroute tool for network diagnostics.  It has a text based interface that auto refreshes showing you the latest ping times to various hosts on the way to your final destination. Check it out once you’re up and running by typing mtr <destination FQDN/IPAddress> at the command prompt.


This is a tool that simply shows the volume of traffic passing through an interface.  Check it out once you’re up and running by typing nload devices wlan0 at the command prompt.  That will show you traffic passing over your USB WLAN adapter.


Ahh yes, tcpdump the de facto tool for packet captures.  If you’re a networking professional and you don’t know this one, just click the link and read.

Now that you’ve selected all of those, lets scroll down the DietPi Software Selection menu to Text Editors.

Text Editors:

The default method of editing text in the Linux command prompt is by using the Vim text editor.  You can choose either Vim and/or Vim-Tiny for installation.  The DietPi OS comes with the nano text editor by default though, so if you hate Vim keep on moving.  You can also choose to install Emacs or Jed which is useful for coding.

Other Settings

I have left most of these as defaults, I did change the web server to Nginx.

  • SSH Server: Dropbear
  • File Server: None
  • Log System: DietPi-Ramlog #1
  • Web Server: Nginx
  • User Data Location: SD / EMMC | /mnt/dietpi_userdata


At this point you should be ready to go ahead and hit the install button.  Don’t forget your new root password…

Linux WLAN general

Using the ODROID C2 as a WLAN Testing Tool – Part 1: Install & Preconfigure DietPi

This series is inspired by the “Maker Session” conducted at the WLAN Pros Conference last year in Budapest.  During the Maker Session each one of the attendees was given an ODROID C2  single board computer along with a battery pack and various other accessories including an 8GB eMMC , eMMC reader, WLAN Adapter etc.  The session went through the steps of installing a customised image of DietPi that included some very handy WLAN tools included in it.  You can see a summary of the hardware, software, tools and the setup process that we followed here.

It was a hell of a lot of fun! AND I went home with some cool toys to play with.

Let’s fast forward 5 or 6 Months.

After spending some time playing with the device since the maker session I have come to realize that  I don’t actually understand very much about how all of the magic inside this little beast fits together.  My knowledge of the Unix/Linux command line is rudimentary and I don’t really know much about the underlying OS.  I understand what the various bits and pieces do but I have no idea how to do this from scratch.  I also want to be able to add some of my own tools to the mix and I want to be able to customize things a little.  So I thought… well… I mean how hard can it be?  Why don’t I build this up from scratch so I understand a little more, and maybe other folks can do this too?

So without further ado, I present part 1 of what I am guessing may be a long learning process littered with errata and edits:

Installing DietPi on your ODROID-C2

This part is actually extremely simple there is a great step by step guide on the DietPi website here.

I am using a Macbook Air running MacOS Sierra (10.12.3) and these are the steps I followed:

  1. Download the correct version of the DietPi OS
  2. Extract the Zip File into a Folder -> Inside the Folder is the .img file
  3. Connect your eMMC / SD Card
  4. Open Terminal
    1. Run the command: diskutil list
      Host-Name:~ User$ diskutil list
      /dev/disk0 (internal, physical):
         #:                       TYPE NAME                    SIZE       IDENTIFIER
         0:      GUID_partition_scheme                        *500.3 GB   disk0
         1:                        EFI EFI                     209.7 MB   disk0s1
         2:                  Apple_HFS Macintosh HD            424.4 GB   disk0s2
         3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
         4:       Microsoft Basic Data BOOTCAMP                74.6 GB    disk0s4
         5:           Windows Recovery                         471.9 MB   disk0s5
      /dev/disk1 (internal, physical):
         #:                       TYPE NAME                    SIZE       IDENTIFIER
         0:     FDisk_partition_scheme                        *128.3 GB   disk1
         1:               Windows_NTFS 128GBBaseQi             128.3 GB   disk1s1
      /dev/disk2 (external, physical):
         #:                       TYPE NAME                    SIZE       IDENTIFIER
         0:     FDisk_partition_scheme                        *7.8 GB     disk2
         1:                 DOS_FAT_32 boot                    134.2 MB   disk2s1
         2:                      Linux                         7.7 GB     disk2s2
    2. You can see that in this example,  the 8GB eMMC Card is listed as /dev/disk2
    3. Before you proceed, make sure you have the right drive path… (any screw up here is gonna hurt)
    4. Run the command: diskutil unmountdisk /dev/disk2  (Make sure you use the correct path for YOUR drive)
      Host-Name:~ User$ diskutil unmountdisk /dev/disk2
      Unmount of all volumes on disk2 was successful
    5. Now go to the folder in which the .img file is kept using the cd / command
    6. Run the command: sudo dd if=DietPi_v145_OdroidC2-arm64-\(Jessie\).img of=/dev/rdisk2
      2. DON’T FORGET THE “r” in /dev/rdisk2
      3. Learn more about the dd command here.
      4. You can use Ctrl+t to view the progress of the copy process.
        Host-Name:DietPi_OdroidC2-arm64-(Jessie) User$ sudo dd if=DietPi_v145_OdroidC2-arm64-\(Jessie\).img of=/dev/rdisk2

        (I press Ctrl+t here…)

        load: 2.85  cmd: dd 2687 uninterruptible 0.01u 0.42s
        8984+0 records in
        8983+0 records out
        4599296 bytes transferred in 3.951183 secs (1164030 bytes/sec)

        (And Again)

        load: 2.70  cmd: dd 2687 uninterruptible 0.03u 0.87s
        17842+0 records in
        17841+0 records out
        9134592 bytes transferred in 7.831405 secs (1166405 bytes/sec)
    7. Once the process is finished (around 5 Minutes), congratulations, you have installed DietPi onto your eMMC / SD-Card.

Two Useful Files

At this point you should have a SD Card / eMMC card mounted on your laptop with the title of “boot”.  If you open up the drive you should see a folder structure similar to the below:

Host Name:/ User$ cd /Volumes
Host Name:Volumes User$ ls
128GBBaseQi    BOOTCAMP    Macintosh HD    boot
Host Name:Volumes User$ cd boot
HostName:boot User$ ls -l
total 81558
-rwxrwxrwx  1 User  staff  12952112 Feb 25 15:29 Image
-rwxrwxrwx  1 User  staff      5816 Feb 25 15:29
-rwxrwxrwx  1 User  staff   2912668 Feb 25 15:29
-rwxrwxrwx  1 User  staff      2316 Feb 25 15:29 boot.ini
-rwxrwxrwx  1 User  staff    111438 Feb 25 15:29 config-3.14.79+
-rwxrwxrwx  1 User  staff      2027 Feb 25 15:29 config.txt
drwxrwxrwx  1 User  staff      3072 Feb 25 15:29 dietpi
-rwxrwxrwx  1 User  staff      7953 Feb 25 15:39 dietpi.txt
-rwxrwxrwx  1 User  staff   4258601 Feb 25 15:29 initrd.img-3.14.79+
-rwxrwxrwx  1 User  staff     29280 Feb 25 15:29 meson64_odroidc2.dtb
-rwxrwxrwx  1 User  staff   4258667 Feb 25 15:29 uInitrd
-rwxrwxrwx  1 User  staff   4258667 Feb 25 15:29 uInitrd-3.14.79+
-rwxrwxrwx  1 User  staff  12952112 Feb 25 15:29 vmlinuz-3.14.79+
Host Name:boot User$

There are two VERY useful files in this directory that we are going to discuss very briefly.


If you open this file up, you will see that it contains the settings for the HDMI display and other peripherals like Raspberry Pi Camera Module, the GPU RAM Split, maximum USB Current etc.  At this point, you really shouldn’t need to edit this file at all.


This file contains settings that are used on the first boot of the device and can be very useful for the following:

  • configuring networking settings & host name
  • automated installation for DietPi software
  • selection of software packages to provide specific services (SSH, File Server, Logging mode, Web Server)
  • Language and Regional Settings
  • Custom Scripts to be run after DietPi installation.

The file also contains OS configuration and Software configuration information that we will dig into at some point.

Network Connectivity

The first time you boot the ODROID with DietPi installed, it will require Internet connectivity to complete the installation and pull data from the repositories at  If you do not have a connection to the Internet you will be asked to change your network settings and try again.  (So no fear if you get this part wrong! You will have an opportunity to fix it!)

Configuring the network connection settings for the first boot of the ODROID will be done by editing the dietpi.txt file.   Right so, lets open that up with a normal text editor.

Ethernet Network Connection with DHCP

These are the default settings that should be in the dietpi.txt file already. Just to confirm, this is what should be in the file (important fields are in bold):

# >> Networking Options -----------------------------
#If both Ethernet and Wifi are enabled, Wifi will take priority and Ethernet will be disabled.
# 1=enabled

#Enter your Wifi details below, if applicable (Case Sensitive).

#Enter your Static Network details below, if applicable.

You should be able to tell that at this point the settings have Ethernet enabled, Wi-Fi is disabled, and the network is configured to use DHCP.

Ethernet Network Connection with Static Addresses

If you plan on using a static IP address for the Ethernet connection, simply set the Use_Static flag to 1 and enter the necessary information for IP Address, Subnet Mask, Default Gateway and DNS Server.

# >> Networking Options -----------------------------
#If both Ethernet and Wifi are enabled, Wifi will take priority and Ethernet will be disabled.
# 1=enabled

#Enter your Wifi details below, if applicable (Case Sensitive).

#Enter your Static Network details below, if applicable.

Wireless Network Connection

What if you don’t have easy access to a wired connection?

No problem! You CAN connect via Wi-Fi, however the ODROID-C2 board does not come with a built in Wi-Fi card and you will have to connect a Linux compatible USB Wi-Fi adapter.  I strongly recommend using the 802.11n Wi-Fi Module 4 or 802.11ac Wi-Fi Module 5 for this project as they will work with linux operating systems out of the box with no additional effort and they are GREAT adapters.   Obviously if you’re going to buy one, don’t mess about, just get the 802.11ac Wi-Fi Module 5.

# >> Networking Options -----------------------------
#If both Ethernet and Wifi are enabled, Wifi will take priority and Ethernet will be disabled.
# 1=enabled

#Enter your Wifi details below, if applicable (Case Sensitive).

#Enter your Static Network details below, if applicable.


In my testing I have found that the USB Wi-Fi adapter will fail to associate if the network is using any other form of authentication & encryption apart from WPA-Personal / AES.  WPA2-Personal with AES does not work.  It looks like the scripts that use the dietpi.txt file for initial boot expect the WLAN to use WPA-personal with AES encryption.  I have not found any way to configure other authentication and encryption types at this stage.   I solved this problem by configuring my home WLAN to publish a second SSID using WPA/AES and the ODROID associated and got an IP on the WLAN with no problem.

If you know how to edit the dietpi.txt configuration file to allow other WLAN authentication / encryption types, please leave it in the comments!

So, to be clear: make sure your network is using WPA-personal with AES encryption and simply replace the Wifi_SSID and Wifi_Key with your network settings and off you go.


At this point you are pretty much done, your ODROID should be able to get Internet connectivity somehow and you can go ahead and unmount the eMMC / SD Card from your laptop (eject) and go ahead and plug it into your ODROID C2.  Don’t forget to plug in the USB WiFi adapter or Ethernet cable before you boot up!

For the next steps to continue the configuration, you will also require a screen with HDMI and a USB keyboard!