Category Archives: Embedded Devices

Experiences with the Raspberry Pi

Raspberry Pi LogoUseful configurations, tools and more for the Raspberry Pi

Finally found some time to write down some of my first experiences with my Raspberry Pi. I own some of this devices to play with them and use them for home server and run them with Linux to make things easier in my daily work. One of this Rasberry Pis is used to display the Zabbix monitoring and alarm page on a wall mounted TV. A second one is used to sync backups over a VPN to an encrypted USB disc to have an emergency backup on a second location. To get started with this devices you find a lot of tutorials on the internet and the distributions and software for this wonderful hardware is well documented. This may help you to do the first steps and find some links. I will update and add some sections from time to time to this post to share what worked for me.

Setup SD-Card

After setting up the SDcard with Archlinux Image for Raspberry Pi I started to setup my favoured environment. Follow this instruction on the Archlinux website.

Update system:

First update all installed software:

pacman -Syu

This should be done if you plan to run your Raspberry Pi as a home server or available over the Internet. Reboot thte system to be sure the last kernel is running.

reboot

Install some useful system tools:

pacman -S htop vim wget

SSH key authentication and X11 forwarding:

Per default the X11 forwarding is disabled and Password Authentication is enabled /etc/ssh/sshd_config. Because I want to test the X11 tools I installed on the PI for my Zabbix monitoring monitor, I had to enable this feature. I don’t use password authentication and disable it on my systems.

Enable X11 forwarding:

X11Forwarding yes

Disabling password authentication:

PasswordAuthentication yes

Modify HDMI output to fit to monitor

My Raspberry Pi is used with a Phillips television to show the Zabbix monitoring webpage for my servers. The pi is connected directly with HDMI to the monitor. The default configuration does not use the HD ready resolution which is 1080i if I am not wrong. To fix this I had to modify the /boot/config.txt file to set the video resolution. A good overview over all configuration variables is available here. For me hdmi_mode=5 1080i 60Hz works to use a better resolution but the screen still did not fit completely. To fix this I had to play with the overscan_top and overscan_bottom values. I had to choose quite high values like 25 and 30 for the variables to make the screen fit correctly and show the complete information but at the end it fixed the cut up picture.

GNUbLIN another ARM Board

I am quite interested in all the ARM stuff. It’s everywhere around us in all this nice and powerful smartphones, cameras, routers and other devices. When I saw an advertisement in the German Linux Magazine I ordered one of this small boards called GNUbLIN. It’s a project created by the embeded project GmbH and the University of Augsburg in the South of Germany.

The Board costs around 50€ and comes with all you need. There is a preinstalled SmartCard with an embedded Linux on it and an USB cable to connect it to your PC.

Connect to Linux PC

If you connect it to your Linux PC this should work out of the box. Just install picocom as recommended by the tutorials on the GNUbLIN project page and run:

sudo picocom -b 115200 /dev/ttyUSB0

Connect to Mac OS X or Windows

If your on Windows or Mac you have to install some drivers. I don’t use Windows but I have a Mac which I want to use for the developing and testing of the board. Therefor got to this page and download the Mac OS X package. You have to reboot after installation. Now when you connect the GNUbLIN Board to your Mac you should see something like this in your /var/log/kernel.log

kernel[0]: com_silabs_driver_CP210xVCPDriver: init
kernel[0]: com_silabs_driver_CP210xVCPDriver64(0xffffff801055c000)::attach
kernel[0]: com_silabs_driver_CP210xVCPDriver64(0xffffff801055c000)::probe
kernel[0]: com_silabs_driver_CP210xVCPDriver64(0xffffff801055c000)::detach
kernel[0]: com_silabs_driver_CP210xVCPDriver64(0xffffff801055c000)::attach
kernel[0]: com_silabs_driver_CP210xVCPDriver64(0xffffff801055c000)::start – Registered for Power Management
kernel[0]: com_silabs_driver_CP210xVCPDriver64(0xffffff801055c000)::start!
kernel[0]: com_silabs_driver_CP210xVCPDriver64(0xffffff801055c000)::start – Found device at interface 0
kernel[0]: com_silabs_driver_CP210xVCPDriver64(0xffffff801055c000)::SelectInterfaces – BulkInput Pipe is 0xffffff800cb07900 on EP1
kernel[0]: com_silabs_driver_CP210xVCPDriver64(0xffffff801055c000)::SelectInterfaces – BulkOutput Pipe is 0xffffff800bd8ce40 on EP1
kernel[0]: com_silabs_driver_CP210xVCPDriver64(0xffffff801055c000)::setPowerState – Waking up
kernel[0]: com_silabs_driver_CP210xVCPDriver64(0xffffff801055c000)::GetCP210xInfo – Part Number Found: 0x02
kernel[0]: com_silabs_driver_CP210xVCPDriver64(0xffffff801055c000)::GetCP210xInfo – UsbConfigurationDescriptor –
kernel[0]: com_silabs_driver_CP210xVCPDriver64(0xffffff801055c000)::GetCP210xInfo     .bLength = 9
kernel[0]: com_silabs_driver_CP210xVCPDriver64(0xffffff801055c000)::GetCP210xInfo     .bDescriptorType = 0x02
kernel[0]: com_silabs_driver_CP210xVCPDriver64(0xffffff801055c000)::GetCP210xInfo     .wTotalLength = 32
kernel[0]: com_silabs_driver_CP210xVCPDriver64(0xffffff801055c000)::GetCP210xInfo     .bNumInterfaces = 1
kernel[0]: com_silabs_driver_CP210xVCPDriver64(0xffffff801055c000)::GetCP210xInfo     .bConfigurationValue = 1
kernel[0]: com_silabs_driver_CP210xVCPDriver64(0xffffff801055c000)::GetCP210xInfo     .iConfiguration = 0
kernel[0]: com_silabs_driver_CP210xVCPDriver64(0xffffff801055c000)::GetCP210xInfo     .bmAttributes = 0x80
kernel[0]: com_silabs_driver_CP210xVCPDriver64(0xffffff801055c000)::GetCP210xInfo     .MaxPower = 50
kernel[0]: com_silabs_driver_CP210xVCPDriver64(0xffffff801055c000)::start – Sucessfully loaded the driver
kernel[0]: com_silabs_driver_CP210xVCPDriver64::setPowerState(0xffffff801055c000, 0 -> 1) timed out after 10141 ms

This indicates that your driver was loaded successful. Now the GNUbLIN console should be available under dev/cu.SLAB_USBtoUART. This is where I found it on my Mac. Next step is to install picocom using MacPorts or use screen which is installed by default to connect to your GNUbLIN board:

screen /dev/tty.SLAB_USBtoUART 115200

If you don’t have MacPorts installed yet pleas follow the instructions here. If you have it installed just install picocom:

sudo port install picocom

Now run picocom on the USB device with following parameters in a terminal.

sudo picocom -b 115200 /dev/cu.SLAB_USBtoUART

Maybe you need to hit return to refresh the output. An login mask like this should appear:

 

 

 

 

Login as root and have fun. There are some example scripts in /root. For example run /root/blink.sh to make the onboard LED blink.