Flash+Arduino on Nokia n810

This tutorial will teach you how to set up a Nokia n810 internet tablet, and get flash swf files to control an Arduino board that is running the firmata 2.0 firmware.

Part 1:

How to set up your Nokia N810:

1.(optional) update your firmware

note:

flashing the firmware will erase everything on your device, except for files placed on the mass memory card (ie dragged on to the device from the desktop). All installed apps will be erased. It’s a good thing to do if your tablet is (a) brand new, or (b) not behaving well, or (c) won’t install some software which requires newer libraries (i.e. skype).

go to: http://tablets-dev.nokia.com/nokia_N810.php and download the latest build. right now it’s: RX-44_DIABLO_5.2008.43-7_PR_COMBINED_MR0_ARM.bin

For mac users, I mirrored the os X GUI flasher program here:

http://hayesraffle.com/n810/osX-Flasher.zip

2. install some applications, using the app manager

open app manager and navigate through the menu to make the R&D tools visible

application manager > Tools > Application catalog > Maemo Extras Devel > uncheck the “disable” box

openssh (client and server). please make the password “admin

personal launcher (allows you to make icons on the desktop that launch scripts or apps)

other (optional) useful applications:

python (maemo-python-device-env)

-easy modules for python. high level access to camera, gui building, and other multimedia stuff.

-Jalimo, to run java applications

3. learn how to control n810 from your desktop machine,

i.e. establish an ssh tunnel to the n810:

Make sure the n810 is online. There is a wifi icon on the home screen. It should have bars lit.

launch settings > connection manager

get its IP address:

from connection manager, use the taskbar menu to go to: connection manager > Internet Connection > IP Address

copy down the ip address. e.g. mine is 10.66.37.28

from your pc, open a “terminal” application and open an ssh tunnel, e.g. from my mac I type

“ssh root@10.66.37.28”

now you can program directly on the device through ssh. If you want to geek out, you can use apt-get instead of the application manager.

4. copy files to/from the device:

use an sftp or ssh program (like Cyberduck or Fugu) to copy files to/from the device. use the device’s IP address to connect to it.

by default, your files will be copied to /root.

It’s often nice to view your files using the n810’s “file manager” application, but your root folder is invisible to file manager. It’s best to copy your files to /user/home/MyDocs.

Note that you may have to change file priviledges (i.e. type “chmod 777 filename” in the terminal) to actually access them from the default “user” account that is logged in to the GUI.

5. install USBControl,

to put the tablet in “host” or “OTG” modes. This allows you to plug normal USB devices (keyboard, arduino boards) into the device. ( http://maemo.org/downloads/product/OS2008/usbcontrol/ )

Install it from my mirror:

Open a browser window on your n810 and type in this address:

http://hayesraffle.com/n810/usbcontrol.deb

choose “open” from the dialog box. App manager should install it for you.

How to use it:

It will show up in the “extras” menu on the device.

“Host” mode is what you use when the arduino is attached.

“OTG” mode is what you normally use.

alternately, you can copy the file to your desktop with this link:

http://hayesraffle.com/n810/usbcontrol.deb.zip

then use your favorite sftp client to copy it to this folder on the tablet: /user/home/MyDocs

then use the “file manager” application to navigate to this file. Double click on it to install.

6. learn how to become root from the gui (just fyi)

launch x-terminal and type ssh root@localhost. Then enter your password, “admin”

7. Now set up flash and arduino to talk to each other:

Part 2:

Get flash on the n810 talking to Arduino Firmata v. 2.0

The basic steps are:

1. install the ftdi kernel module

2. put the machine in usb host mode with usbcontrol

3. connect the arduino board to the n810, running firmata.

4. plug arduino in to the n810. it should turn on.

5. set up the n810 to talk/listen to the n810, i.e. using the serproxy program.

6. start flash and hope for the best.

The easy way to do this is to follow the instructions from Dave Vondle at IDEO Labs. Thanks Dave!

1. We’re going to follow Dave’s instructions,

but skp the part about soldering a cable:

http://code.google.com/p/ideo-maemotablet/wiki/NokiaN810ArduinoSetup

2. We’ll change a few things to make it work with firmata:

a) as I mentioned, you will not solder your own cable. Instead, we will get usb gender changers (female-female USB A connectors) to connect the normal arduino cable to the normal n810 cable. These come from RadioShack or Fry’s. For example: 70534.jpg 576×638 pixels

b) we will replace Dave’s serproxy.cfg file with my version of the serproxy.cfg file, which can be downloaded from here:

http://hayesraffle.com/n810/serproxy.cfg.zip (from your mac/pc)

– or –

http://hayesraffle.com/n810/serproxy.cfg (from your n810)

c) we will use the flash files and tutorials proviced by Bjoern Hartmann, which we used last week.

http://protolab.pbwiki.com/TutorialFlashSetup2009

1. do your development and debugging on your desktop machine.

2. When things work, you can copy compiled swf files to the N810. Put them in /home/user/MyDocs, over an ssh tunnel, as explained earlier, and launch them from the File Manager, as Dave explains

3. make a desktop icon to launch the serproxy from the gui:

open “personal launcher” from the extras folder

click on the ‘ + ‘

Name = serial proxy

Command to execute = /home/user/MyDocs/serproxy

run in terminal = checked

type “ok”

close “personal launcher”

now there should be an icon on your desktop that will launch the serial proxy.

when you have your final flash file, you can add another icon to launch that from the desktop, too.

You’re done!

But here are some more details on the basic steps:

1. install the ftdi kernel module

the easy way: Do the last step “Flash new kernel image” on the page:

RomToolInstructions – ideo-maemotablet – Google Code

you will need the flasher program and kernel image from here:

nokiaN810-Arduino.zip

or, the hard way, which has to be done every time you boot up:

http://blog.locationist.net/2008/03/16/arduino-interaction/

insert the ftdi kernel module

with this code, tpyed from the device.:

insmod usbserial.ko

insmod ftdi_sio.ko

2. put the machine in usb host mode,

either using hardware (a custom cable you made) or software (using USBControl Application you just installed). You can do it from a script, too:

http://www.internettablettalk.com/wiki/index.php?title=HOWTO:_USB_Host_mode_on_the_N800_using_OS_2008

3. connect the arduino cable to the n810

you will need to buy an adapter at fry’s or radioshack. a usb gender changer (connector that’s female on both sides) will work to connect the standard n810 cable to the standard arduino cable.

4. set up the arduino to talk/listen to the n810. i.e. load the firmata firmware using your p.c.

5. plug arduino in to the n810. it should turn on.

6. set up the n810 to talk/listen to the n810, i.e. using the serproxy file from http://code.google.com/p/ideo-maemotablet/wiki/NokiaN810ArduinoSetup and launched with your personal desktop icon (#3 above).

7. start flash. From file manager, locate your file and double click on it. Or make a personal launcher desktop icon and use that.