Practical Guide to Getting Started with the TS-7800-V2

This practical guide gives us an opportunity to take a relaxed approach to getting started with the TS-7800-V2 single board computer. We’re going to take a look at how to make our first connections, and setup the network. These are usually the first things we do before starting development. In the grand scheme of things, this is just a friendlier extrapolation from the official TS-7800-V2 manual, so be sure to keep it handy for more advanced topics and specific details. The only assumption being made is that you’ve purchased the TS-7800-V2 with a development kit, including the pre-programmed microSD card and necessary cables.

For you TS-7800 users upgrading to the TS-7800-V2, you’re in for a treat. There’s a migration guide specifically created to help you with some of the nuances in upgrading. For this, take a look at the “Migration Path” section of the TS-7800-V2 Manual.

When you’ve finished, be sure take a look at PWM Primer with the TS-7800-V2.  Good stuff there about working with dimming LEDs and controlling servo motors.

Right then, let’s get started!

Connections and Jumpers

Let’s take a look at the most basic of connections: serial console, power, and Ethernet. Follow along in order and we’ll be ready for the next section when we actually apply power and start using the TS-7800-V2.

Jumpers

Out of the box, the TS-7800-V2 has it’s jumpers set to 1.) boot from the microSD card, 2.) enable serial console, and 3.) skip the U-Boot shell and boot straight into the Debian environment. This is great for development, so we’ll keep them that way.

Serial Console

A good ‘ol serial console provides a reliable and consistent connection to the single board computer. Other methods like SSH or Telnet are nice too, but a serial console isn’t prone to failure because of botched startup scripts or network snafus.

The TS-7800-V2 offers two port choices when it comes to serial console connections: USB and DB-9. It’s up to you which to choose, just don’t attempt to use both at once (undefined behavior). If you go the DB-9 route, you’ll need a null modem cable and possibly a Serial to USB adapter since computers don’t usually come with serial ports anymore. This author’s preference is to use the USB port to get a console, so that’s what we’ll cover in detail.

It’s recommended that you work from a Linux development machine. Not only are the serial port drivers already installed, but you’ll also need it if you plan on using our cross compile toolchains for a larger project later on. For now, if you’re on a Windows or Mac OSX machine, you can obtain the serial port drivers from the Silabs USB-to-UART drivers page.

Next step is to connect the micro USB cable to your computer and follow the instructions given in the “Get a Console” section of the TS-7800-V2 manual. This author’s preference is minicom, a no-frills, cross-platform serial communications program. Basically, we’re setting the baud rate to be 115200, 8N1, no hardware or software flow control. Typically, your serial device name may be:

  • Linux, /dev/ttyUSB0
  • Mac OSX, /dev/tty.SLAB_USBtoUART
  • Windows, use device manager to discover COM port

After setting some jumpers and applying power, which we’ll talk about both next, you’ll see something similar to the screenshot below (Mac OSX Terminal running minicom):


Pro-tip: Running minicom alone will constrain the terminal row and column count to something pretty small that will never take up the whole terminal window. To take advantage of all the real estate your terminal window has to offer, run <span class="lang:sh highlight:0 decode:true crayon-inline">TERM=linux minicom</span>  instead. Remember to setup an alias as a shortcut for yourself!

Pro Tip: If you’d like to use SSH after setting up your network connection, you’ll need to set a password. Run passwd  to create a password followed by dpkg-reconfigure openssh-server . Also, refer to the “Setting up SSH” section of the TS-7800-V2 manual.

Power

The TS-7800-V2 has both variable input voltage of between 8 to 28 VDC from the TS-781 (TS-ENC720-7260 enclosure) pictured below and fixed input voltage of 5 VDC on the TS-7800-V2 itself pictured above. We’ll be using the 5 VDC power supply that comes with the development kit (Part# PS-5VDC-REG-2P1). The bootup process will begin immediately once you plugin the power supply. If you have a serial console program up and running, you’ll see the boot messages displayed on the console.

Ethernet

Undoubtedly, you’ll want to connect the TS-7800-V2 to a network for SSH access, or NFS booting, or communicating with other systems, or downloading new programs, or countless other number of reasons. The TS-7800-V2 comes with one Gigabit Ethernet connection, designated as eth0 in Linux. Plug in a standard Ethernet cable connected to your router or switch, and continue reading for further instructions on setup. Of course, you could go wireless as well, but for development, a good ‘ol solid Ethernet connection eliminates a lot of guesswork and headache.

Wireless Module (Optional)

If you purchased the optional soldered down wireless and Bluetooth module, you’ll see it on the board, but there’s nothing else you need to do. The wireless antenna is integrated into the wireless module, so this is the easiest step in this guide so far. It will be designated at wlan0 in Linux.

About the Embedded Linux Environments

The TS-7800-V2 has the ability to boot to several different OSs and environments via U-Boot, a general purpose bootloader sitting on the small, 16MB eMMC hardware boot partition. You can find out more about the U-Boot environment by taking a look at the “U-Boot Environment” section of the TS-7800-V2 manual. Currently, the supported OS image is Debian Linux, running the 4.4.8 kernel, which is preloaded onto the onboard eMMC flash and microSD card (sold as a separate option, included in development kit).

Pro Tip: For development, best practice is to boot to microSD card for ease of recovery should something go wrong. Just plug the microSD card into a development machine and modify files directly.

Otherwise, the flash and microSD card contain two partitions, a small one where U-Boot is located and the larger one where the filesystem and kernel are located. U-Boot understands how to load the kernel, device tree, and boot arguments and run the OS from the one partition. More information about U-Boot startup sequence can be found in the “U-Boot” section of the TS-7800-V2 manual.

Pro Tip: If you’d like to run your application automatically upon boot, which is a very common request, take a look at the “Starting Automatically” section of the TS-7800-V2 manual.

Setup Networking

If you recall, we’re going to be setting up our eth0 network interface. For this, we’re going to follow the “Configuring the Network” section of the manual. First, we’ll enable the network interface, and then we’ll go about obtaining an IP address. The easiest way to get an IP address is dynamically using DHCP. For some applications, like a web server, a static IP address is better to use. We’ll take a look at both.

Dynamic IP

Out of the box, the TS-7800-V2 will have a default IP address set to 192.168.0.50 on eth0 interface.  Chances are, you’ll want to setup the interface to use DHCP.

First, we need to enable the eth0 network interface by issuing the following command:

root@ts7800-v2:~# ifconfig eth0 up
root@ts7800-v2:~#

Then, in order to get an IP address, we issue the command:

root@ts7800-v2:~# dhclient eth0
root@ts7800-v2:~#

Issuing the ifconfig command should show us our connection information, which in this case the board was assigned the IP address of 192.168.1.107:

root@ts7800-v2:~# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.107  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::604b:30ff:fe78:603b  prefixlen 64  scopeid 0x20<link>
        ether 00:d0:69:4e:f2:e9  txqueuelen 532  (Ethernet)
        RX packets 21  bytes 4765 (4.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 14  bytes 1626 (1.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 36  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 1  bytes 112 (112.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1  bytes 112 (112.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

root@ts7800-v2:~#

Nothing to it! You should now be able to ping an external URL to test your connection:

root@ts7800-v2:~# ping debian.org
PING debian.org (5.153.231.4) 56(84) bytes of data.
64 bytes from senfter.debian.org (5.153.231.4): icmp_seq=1 ttl=44 time=137 ms
64 bytes from senfter.debian.org (5.153.231.4): icmp_seq=2 ttl=44 time=137 ms
64 bytes from senfter.debian.org (5.153.231.4): icmp_seq=3 ttl=44 time=135 ms
64 bytes from senfter.debian.org (5.153.231.4): icmp_seq=4 ttl=44 time=134 ms
^C
--- debian.org ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 134.756/136.319/137.636/1.293 ms
root@ts7800-v2:~#

Next time we boot the system with the Ethernet cable plugged in, we’ll want to automatically be connected to our network via DHCP. For this, we rely on the Debian networking config file. Let’s take a look really quick at how that works.  First, let’s take a look at the file responsible for setting up our Ethernet device at /etc/network/interfaces.

root@ts7800-v2:~# cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
#iface eth0 inet dhcp
iface eth0 inet static
        address 192.168.0.50
        netmask 255.255.255.0

You’ll notice the DHCP line has been commented out and the static lines are active. Simply reverse this by commenting out the static lines and uncommenting the DHCP line.

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp
#iface eth0 inet static
#        address 192.168.0.50
#        netmask 255.255.255.0

Perfect. We should be good to go now. Give your system a reboot and make sure it comes back up with an DHCP assigned IP address.

Static IP

In order to set a static IP address, simply modify the /etc/network/interfaces file with your desired IP address.
For example, I want to assign the IP address of 192.168.1.122.

root@ts7800-v2:~# cat /etc/network/interfaces 
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
#iface eth0 inet dhcp
iface eth0 inet static
        address 192.168.1.122
        netmask 255.255.255.0

Now, restart the system. Once we’ve logged back in, we’ll do a quick test by issuing the ifconfig eth0 command and double check that our IP address has now changed.

root@ts7800-v2:~# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:d0:69:4d:8c:3a  
          inet addr:192.168.1.122  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::2d0:69ff:fe4d:8c3a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:94 errors:0 dropped:0 overruns:0 frame:0
          TX packets:19 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:15590 (15.2 KiB)  TX bytes:1466 (1.4 KiB)

That’s it! You should now be good to go. Next, we’ll talk about wireless connections.

Wireless Networking

This section needs some revising and updating
The wireless module of the TS-7800-V2, the Microchip ATWILC3000, is not only capable of connecting to a wireless access point, but it can also behave as an access point itself (aka master mode). We’ll concentrate on connecting to an access point in this guide. If you’d like to use it as an access point, you’ll want to review the “Host a WIFI Access Point” section of the TS-7800-V2 manual.

Wireless interfaces are managed with configuration files in “/etc/network/interfaces.d/” similar to wired networking. Specify wlan0 instead of eth0.

Next, we’ll enable the interface, scan for an access point, and then associate with it. Enabling the wireless interface is a simple command:

ifconfig wlan0 up

Then, we’ll want to scan for access points using iwlist like so:

iwlist wlan0 scan

The output can be overwhelming, so you may want to filter out just the ESSID names using the command:

iwlist wlan0 scan | grep ESSID | cut -d':' -f2

Okay, so once you’ve identified an access point you want to connect to, you’ll need to associate with it. Now, there are open access points that don’t require any credentials to associate and there are protected ones using WEP or WPA security types.

Open Access Point

This is the easiest. You’ll be able to simply issue the following command to associate:

iwconfig wlan0 essid "default"

Now, make sure you’ve associated with the access point:

root@ts7800-v2:~# iwconfig wlan0
wlan0     IEEE 802.11bgn  ESSID:"default"  
          Mode:Managed  Frequency:2.417 GHz  Access Point: c0:ff:ee:c0:ff:ee   
          Bit Rate=1 Mb/s   Tx-Power=20 dBm   
          Retry  long limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality=70/70  Signal level=-34 dBm  
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Finally, run dhclient eth0  to get an IP address.

WEP Protected Access Point

Very similar to ‘Open Access Point’ section above except you’ll need to specify a password:

iwconfig wlan0 essid “default” key “yourpassword”

Same as above, follow up with iwconfig wlan0 and dhclient wlan0.

WPA Protected Access Point

For this, we’re going to use the wpa_passphrase and wpa_supplicant utilities which make life easier. First, create the /etc/wpa_supplicant/ directory and generate a passphrase configuration file. Replace ‘the_essid’ and ‘the_password’ with the ESSID and password to connect to the access point.

mkdir /etc/wpa_supplicant/
wpa_passphrase the_essid the_password >> /etc/wpa_supplicant/wpa_supplicant-wlan0.conf

You can take a look at this file, but essentially it contains information and a hashed password for the association. Next step is to start the wpa_supplicant daemon which will run in the background.

wpa_supplicant -iwlan0 -c/etc/wpa_supplicant/wpa_supplicant-wlan0.conf -B

You should see output similar to this:

root@ts7800-v2:~# wpa_supplicant -iwlan0 -c/etc/wpa_supplicant.conf -B
 Successfully initialized wpa_supplicant
 root@ts7800-v2:~# [  306.924691] wlan0: authenticate with 28:cf:da:b0:f5:bb
 [  306.959415] wlan0: send auth to 28:cf:da:b0:f5:bb (try 1/3)
 [  306.968137] wlan0: authenticated
 [  306.978477] wlan0: associate with 28:cf:da:b0:f5:bb (try 1/3)
 [  306.988577] wlan0: RX AssocResp from 28:cf:da:b0:f5:bb (capab=0x1431 status=0 aid=9)
 [  307.009751] wlan0: associated
 [  307.012768] IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
 [  307.047989] wlcore: Association completed.

Then, same as the other sections above, follow up with iwconfig wlan0 and dhclient wlan0.

Finally, if you want your connection to be there when you reboot, you’ll need to configure systemctl to automatically set everything for you.

systemctl enable wpa_supplicant@wlan0
systemctl start wpa_supplicant@wlan0

As always, feel free to review the “Debian Wireless Client” section of the TS-7800-V2 manual for more information.

Setup Bluetooth

For this, you’ll be using Bluez, the official Linux bluetooth protocol stack. There’s not much you need to do for setup, but there are some commands you’ll want to become familiar with such as hcitool and hciconfig.  There is plenty of documentation and guides available online for this, so we won’t go into any detail on it here. We also have a small “Bluetooth” section of the TS-7800-V2 manual you can refer to in order to get a taste of how it works.

Conclusion

In this getting started guide, we took a quick look at how to get everything connected, how to communicate with the board, and how to setup networking. You should be well on your way in developing your application, so go build something amazing!

Pro Tip: Once you’ve finished with development and are ready to move into production, be sure to move your application into the eMMC flash storage for extra reliability in the field. Also, invest in the rugged metal enclosure to protect it from the elements.

Is there anything else you’d like to see added to this practical getting started guide for the TS-7800-V2? Be sure to comment below, and we’ll get it added!

Similar Posts:

Author: Derek Hildreth

eBusiness Manager for Technologic Systems