Raspberry Pi and an 8×8 LED Matrix, using C.

Below is some information on how to get an 8×8 led matrix working on your Raspberry Pi using C.
I have also included the code needed to get text scrolling.

The matrix I am using is this one from Adafruit. This matrix uses a HT16K33 controller chip and communicates with the Pi via the i2c bus.

Adafruit has very good and detailed tutorials on how to solder it up and get i2c working between your Pi and the Matrix.

In brief;

  1. Scan the i2c bus for your device.
  2. Download the code needed.
  3. Compile.
  4. Run.

1. Scan i2c bus

Adafruit have some great instructions in the links above on how to do this.
When using i2cdetect to scan my bus, 0x70 was returned for the address of my matrix.
I am using a Rev B board and my bus is 1. If you get nothing back, check bus 0 with i2cdetect -y 0.

pi@raspberrypi ~ $sudo i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: — — — — — — — — — — — — —
10: — — — — — — — — — — — — — — — —
20: — — — — — — — — — — — — — — — —
30: — — — — — — — — — — — — — — — —
40: — — — — — — — — — — — — — — — —
50: — — — — — — — — — — — — — — — —
60: — — — — — — — — — — — — — — — —
70: 70 — — — — — — —
pi@raspberrypi ~ $

Continue reading Raspberry Pi and an 8×8 LED Matrix, using C.

Raspberry Pi, 1.8″ TFT, RF Receiver and Temperature Sensor

Below is some detail regarding the latest project I have been working on. Which is near completion.
I plan to wire it up permanently, place within a case and wall mount it.



Some of the images don’t come up too great in the video, I have included the actual images used here;

Temp12 hour GraphGraph

I created a simple one line bash script that polls for the temperature every 5 mins.

The main python program uses pygame to write to the TFT via a framebuffer and Matplotlib is used to create the Graphs.
The display can be changed by either the button on the breadboard or via the remote FOB.

Continue reading Raspberry Pi, 1.8″ TFT, RF Receiver and Temperature Sensor

How to Test the SD Card Speed on Your Raspberry Pi

Some of us will have multiple SD cards lying around. And sometimes it isn’t obvious which one is the best to use.

Here is how you can check the speed of your SD cards which may help you with choosing the fastest one.

hdparm is a good tool to view disks reads, from the disk and from the buffer. We will use two options for hdparm;

  1. The speed of reading directly from the Linux buffer cache without disk access. (-t option)
  2. The speed of reading through the buffer cache to the disk without any prior caching of data. (-T option)

The first shows us an indication of the throughput of the processor, cache, and memory of the system under test. The second measures how fast the drive can sustain sequential data reads, without any filesystem overhead. It is also best to run this command multiple times to see the affect of the caching.


Need to install hdparm, and then run it at least twice.
From my output below, you can see that the response for the cached reads increased the second time I ran hdparm.

pi@raspberrypi ~ $ sudo apt-get install hdparm
pi@raspberrypi ~ $
pi@raspberrypi ~ $ sudo hdparm -tT /dev/mmcblk0  /dev/mmcblk0:
Timing cached reads: 104 MB in 2.01 seconds = 51.67 MB/sec
Timing buffered disk reads: 58 MB in 3.03 seconds = 19.12 MB/sec
pi@raspberrypi ~ $ sudo hdparm -tT /dev/mmcblk0  /dev/mmcblk0:
Timing cached reads: 188 MB in 2.03 seconds = 92.76 MB/sec
Timing buffered disk reads: 60 MB in 3.03 seconds = 19.83 MB/sec
pi@raspberrypi ~ $



DD can also be used to test SD card speeds.
WARNING: you must be careful using DD as incorrect options can erase your SD card.

This command will write a 200MB file called test to the SD Card;
dd if=/dev/zero of=test bs=1048576 count=200

This command will read the 200MB file created in the first command;
dd if=test of=/dev/null bs=1048576


pi@raspberrypi ~ $ dd if=/dev/zero of=test bs=1048576 count=200
200+0 records in
200+0 records out
209715200 bytes (210 MB) copied, 9.6409 s, 21.8 MB/s
pi@raspberrypi ~ $
pi@raspberrypi ~ $ dd if=test of=/dev/null bs=1048576
200+0 records in
200+0 records out
209715200 bytes (210 MB) copied, 10.2369 s, 20.5 MB/s
pi@raspberrypi ~ $


Continue reading How to Test the SD Card Speed on Your Raspberry Pi

View images as ASCII in the terminal on a Raspberry Pi

I run my Raspberry Pi headless and I don’t like to access X windows.
Sometimes I need to look at an image, mostly PNG. I use my Pi to produce graphs and I want to see if the change took.

cacaview allows me to view the images as ASCII in the terminal. Which allows me to have a quick look at the image, and it also looks kinda cool and retro.

Cacaview Raspberry Pi

Install and using cacaview

Installing cacaview:

pi@raspberrypi ~ $sudo apt-get install caca-utils

To view an image:

pi@raspberrypi ~ $cacaview gp.png

+ Zoom in
Zoom out
d Change differ
hjkl Move

Continue reading View images as ASCII in the terminal on a Raspberry Pi

Send emails with attachements from the Linux command line.

If you are like me and you are running your Raspberry Pi headless, and don’t want to start up X windows to send a simple email. You are in luck, as this can easily be done from the command line. And it is very easy to setup.

Note; This is only to send email, and not receive.

– Install SSMTP

pi@raspberrypi ~ $sudo apt-get update
pi@raspberrypi ~ $sudo apt-get install ssmtp

-Configure SMTP

pi@raspberrypi ~ $ sudo nano /etc/ssmtp/ssmtp.conf

Add add these lines;


Use your email address for root, and your gmail username and password for AuthUser and AuthPass.

To send an email
To send an email, run SSMTP with the recipients name.
SSMTP will then wait for you to type your email. It has to be formatted as shown below. And once done, press Ctrl-D to send.

pi@raspberrypi ~ $ ssmtp mail.address@example.com
subject: this is a test
hello world!
pi@raspberrypi ~ $

Continue reading Send emails with attachements from the Linux command line.

How to Cross Compile the Kernel for the Raspberry PI

August 2015 ## This guide has been updated to the latest version of Raspbian ##

Compiling the kernel on the Raspberry Pi can take some time, Im not sure how long it takes as I have never waited long enough, I gave up after 4 hours.
Below is a guide on how to compile the kernel on a faster PC and then transfer the new kernel and modules over to the Raspberry Pi.

Cross compiling is when you compile on a different platform then what the kernel will be used for. This is mostly done when the host receiving the kernel is on a slow or legacy device.


Continue reading How to Cross Compile the Kernel for the Raspberry PI

Raspberry Pi and TFT Display

The 1.8″ TFT from Adafruit is the perfect display to attached to a Raspberry Pi.

These instructions also help with the Sainsmart display and you can find more info for both here: http://www.whence.com/rpi/



The TFT isn’t ‘plug & play’ with the Raspberry, a patch has to be applied to the kernel to be able to interface via SPI with the ST7735R controller chip on the TFT. Once working, the display will act as a framebuffer device.

I spent two weeks trying to get it working, so I thought I would document it to help others.

PiScreen TFT Raspberry Pi

###UPDATE 14th Nov 2013###
After a large number of request, I have now posted the compiled version of the kernel that supports the 1.8” TFT. Based on 2013-09-25-wheezy-raspbian.img. There are two links below, one for the Kernel the other is the instructions.








Thanks go to Kamal (http://www.whence.com/rpi/) and Neil for responding to my emails & forum post, and their work on the ST7735R driver.
Thanks also go to Adafruit for their cool products.


As it takes over three hours to compile the kernel on the PI, I will show how to cross compile from another Linux PC. In my case, it is Ubuntu 12.10 running within VMWare on a Windows 7 Quad core PC. Kernel compile time is 15 mins.


Wire it up

Sainsmart wiring details are here on Kamal’s page: http://www.whence.com/rpi/

You could also use a shield to make the wiring a lot easier, look here

Prepare the Raspberry Pi

-Download and install Raspbian “wheezy”.
This guide is based on 2013-02-09-wheezy-raspbian which is running 3.6.11 kernel

Continue reading Raspberry Pi and TFT Display

Blip, blop, bloop…