Opening Kano Pixel Kit

Pixel Kit made by Kano is small computer for kids. They build it to help kids start coding. I bought one for my 9 year son.

The whole ‘greatness’ is in it’s screen which is made of 16 x 8 grid of RGB LEDs.

But the best is that when Pixel Kit is connected to computer and my kid starts coding whatever he puts into the code is imidiatelly displayed on the grid.

The very same day when my son put Kano’s motherboard into the case, I wait until he’ll finish his play and go to sleep. Then I get it out of the case and found that it’s customized BananaPi M2U. Not that I’m so good in SoC computers that I can recognize one with one glimpse of eye: I just removed SD card from it.

and mount it in my Linux machine.

There are 3 partitions on the card: one is FAT32 and two others are Linux ext4. The FAT32 partition holds U-Boot image and uEnv.txt which describes what should be done with image during boot sequence. First lines of uEnv.txt say:

bpi=bananapi
board=bpi-m2u
chip=r40
service=linux
kernel=uImage

That’s how I know the name of the board. So, I just checked it with the specs on official Banana Pi’s web.

“Look where the paths are going through and the whole board will open wide with help of three small holes — says old wisdom”

Everything fits, there’s R40 CPU

a WiFi chip with small but nice antenna,

and there’s something I was looking for — FE1.1S 812396 USB hub controller.

Look at the paths going from it to all 3 USB ports. I noticed that three of them are going through the whole board , under the battery and finish with small holes. They look like perfect connectors for UART device.

UART uses very simple way to send and receive signals. It comes from telegraphs and was design by Gordon Bell in DEC’s PDP-1 computer. The whole story of UART is in Wikipedia and the theory of operation you can find in this YT video.

Connecting serial console to UART will give me access to very first messages machine is emmiting during boot and also will allow me to interact with it. Below is slide showing the very first step of U-Boot loader sequence. Das U-Boot is loaded by BIOS procedure then initiates hardware components and loads kernel. UART allows developer to see what happens when hardware is booting but also allows to log in the system when boot sequence is done.

To log in I need username and password. I decided to not mount Linux partitions to just clear password from shadow file but first to try some defaults. ;)

Original BananaPi has grid of goldpins called GPIO in which three of them are for serial communication and they are well known. Pixel Kit has only 3 holes so they should be for UART. I had to check them first.

UART operates at 3.3V so I used meter to be sure:

“And it looked like system is smiling through those holes”

None of my computers have serial port (yes, I’m looser) so I need USB-to-serial converter. Happily I had Arduino UNO which has such controller built in, to make it work I had to remove microcontroller from its socket.
Then connect right pins togheter remembering that Tx (transfer) on one side must be connected with Rx (receive) on the other and vice versa. Simple, if one side transfers (Tx) other side must receive (Rx). Go it?
Great.

Pixel Kit board has Rx, Tx and Gnd (ground) respectively looking from the side where Power button is located.

As a terminal I used Arduino application (in OSX):

then I learned that I can just use screen:
screen /dev/cu.usbmodem1421 115200
on OSX and Linux or minicom (in Linux).

It worked! Finally I could try to login and noticed that none of the ‘default’ password worked. Good job Kano! Or is it ‘kano123’? ;)

If one has access to partition there is no problem to remove root’s password in Linux.

But first things first — I made a backup of the whole SD card, just to be sure I can start from scratch if I do something stupid. So, I did this:
dd if=/dev/sdx of=pixelkit-card.img
It took some time but I can then do the reverse:
dd of=/dev/sdx if=pixelkit-card.img
and make the card as new.

I mounted second partition from SD card, and cleared password from /etc/shadow file. Synced, unmouted, done.

This time I logged in with terminal.
Next step will be to be setup WiFi connection, log in with SSH and find how it all works.

to be continued…