User:Nukama

From Openmoko

(Difference between revisions)
Jump to: navigation, search
m (SHR)
(USB-Networking: FreeBSD)
Line 33: Line 33:
  
 
== USB-Networking ==
 
== USB-Networking ==
 +
 +
=== [[FreeBSD]] ===
 +
 +
 +
==== [[devd]] ====
 +
 +
Figure out the ugen for your Openmoko device:
 +
<pre>dmesg | grep ugen | grep Linux</pre>
 +
Then note down idVendor and idProduct value:
 +
<pre>
 +
# usbconfig -d ugenU.A dump_device_desc | grep idVendor
 +
# usbconfig -d ugenU.A dump_device_desc | grep idProduct
 +
</pre>
 +
 +
Configure devd(8) to perform an action if a device with the appropriate vendor and product string is attached.
 +
 +
/etc/devd.conf
 +
<pre>#Openmoko Freerunner with Linux 2.6.34+
 +
attach 100 {
 +
        device-name "ugen[0-9]+";
 +
        match "vendor" "0x0525";
 +
        match "product" "0xa4a2";
 +
        action "perl /usr/local/etc/neo_if.pl /dev/$device-name";
 +
};</pre>
 +
 +
This action consists of switching to network mode:
 +
<pre># usbconfig -d ugenU.A set_config 1</pre>
 +
and assigning an IP address:
 +
<pre># ifconfig ue0 192.168.0.200/24</pre>
 +
This is also done with this script:
 +
 +
/usr/local/etc/neo_if.pl
 +
<pre>#!/usr/bin/perl
 +
my ($u, $ad) = $ARGV[0] =~ /(\d+)\.(\d+)$/;
 +
print ("usage: $0 /dev/ugen4.2\n"), exit unless (length $u and length $ad);
 +
print `usbconfig -u $u -a $ad set_config 1
 +
#ifconfig ue0 link 00:1f:11:01:71:62 # uncomment if moko reports: usb0: duplicate address detected!
 +
ifconfig ue0 192.168.0.200/24`;</pre>
 +
 +
Finally restart the devd daemon with:
 +
<pre># service devd restart</pre>
 +
 +
If you now plug the FreeRunner into the USB port the cdce0 interface gets created and the IP address will be assigned.
 +
 +
==== [[Routing]] ====
 +
<pre>
 +
_______________      _______________      _______________
 +
|              |    |              |    |              |
 +
| Router        |    | Workstation  |    | Freerunner    |
 +
|              |_____|              |_____|              |
 +
| 192.168.1.1  |    | 192.168.1.2  |    | 192.168.0.202 |
 +
|              |    | 192.168.0.200 |    |              |
 +
|_______________|    |_______________|    |_______________|
 +
</pre>
 +
 +
Enable on your FreeBSD workstation ip forwarding from one interface to another:
 +
<pre># sysctl net.inet.ip.forwarding=1</pre>
 +
 +
For persistent forwarding enable gateway inside
 +
 +
/etc/rc.conf
 +
<pre>gateway_enable="YES"</pre>
 +
or the appropriate sysctl variable inside
 +
 +
/etc/sysctl.conf
 +
<pre>net.inet.ip.forwarding=1</pre>
 +
 +
 +
Add a route inside your router.
 +
<pre># route add -net 192.168.0.0/24 gateway 192.168.1.2</pre>
 +
or
 +
<pre># route add -host 192.168.0.202 gateway 192.168.1.2</pre>
 +
 +
If you have no control over your router use Network Address Translation.
 +
 +
==== [[NAT]] ====
 +
 +
todo
  
 
=== [[OpenWrt]] ===
 
=== [[OpenWrt]] ===
Line 62: Line 140:
 
sudo bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
 
sudo bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
 
</pre>
 
</pre>
 
 
  
 
== Packages ==
 
== Packages ==

Revision as of 17:50, 7 April 2011

Contents

Software related

Distributions

OpenWrt

append "arch s3c24xx 1" to /etc/opkg.conf


Useful packages:

opkg install openssh-sftp-server


SHR

Installation

ubi - ubinized for flashing with NeoTool

ubifs - UBIFS


Problems

with shr-lite-eglibc-ipk--20100115-om-gta02.rootfs @ uImage-2.6.32.3-oe1+gitr1+5827b20d022fb47ce9c9731d0fb894d361e16ffe-r4-om-gta02.bin booted with qi-ubi-s3c2442-1.0.2-r0+gitr0+c38b062a609f1442e6a9e13005cfbdfd59a5ac0d.udfu


  • whitescreen(ofstarving) from resuming and dimming, sometimes the lock-screen appears

Workaround: edit /etc/phonefsod.conf

auto_suspend = never /maybe normal would work also...

USB-Networking

FreeBSD

devd

Figure out the ugen for your Openmoko device:

dmesg | grep ugen | grep Linux

Then note down idVendor and idProduct value:

# usbconfig -d ugenU.A dump_device_desc | grep idVendor
# usbconfig -d ugenU.A dump_device_desc | grep idProduct

Configure devd(8) to perform an action if a device with the appropriate vendor and product string is attached.

/etc/devd.conf

#Openmoko Freerunner with Linux 2.6.34+
attach 100 {
        device-name "ugen[0-9]+";
        match "vendor" "0x0525";
        match "product" "0xa4a2";
        action "perl /usr/local/etc/neo_if.pl /dev/$device-name";
};

This action consists of switching to network mode:

# usbconfig -d ugenU.A set_config 1

and assigning an IP address:

# ifconfig ue0 192.168.0.200/24

This is also done with this script:

/usr/local/etc/neo_if.pl

#!/usr/bin/perl
my ($u, $ad) = $ARGV[0] =~ /(\d+)\.(\d+)$/;
print ("usage: $0 /dev/ugen4.2\n"), exit unless (length $u and length $ad);
print `usbconfig -u $u -a $ad set_config 1
#ifconfig ue0 link 00:1f:11:01:71:62 # uncomment if moko reports: usb0: duplicate address detected!
ifconfig ue0 192.168.0.200/24`;

Finally restart the devd daemon with:

# service devd restart

If you now plug the FreeRunner into the USB port the cdce0 interface gets created and the IP address will be assigned.

Routing

 _______________       _______________       _______________
|               |     |               |     |               |
| Router        |     | Workstation   |     | Freerunner    |
|               |_____|               |_____|               |
| 192.168.1.1   |     | 192.168.1.2   |     | 192.168.0.202 |
|               |     | 192.168.0.200 |     |               |
|_______________|     |_______________|     |_______________|

Enable on your FreeBSD workstation ip forwarding from one interface to another:

# sysctl net.inet.ip.forwarding=1

For persistent forwarding enable gateway inside

/etc/rc.conf

gateway_enable="YES"

or the appropriate sysctl variable inside

/etc/sysctl.conf

net.inet.ip.forwarding=1


Add a route inside your router.

# route add -net 192.168.0.0/24 gateway 192.168.1.2

or

# route add -host 192.168.0.202 gateway 192.168.1.2

If you have no control over your router use Network Address Translation.

NAT

todo

OpenWrt

/etc/config/network

config interface lan
option proto static
option ifname eth0
option ipaddr 192.168.0.202
option netmask 255.255.255.0
option gateway 192.168.0.200
option dns 208.67.222.222

Without modifying the /etc/config/network

sudo iptables -I INPUT 1 -s 192.168.1.1 -j ACCEPT
sudo iptables -I OUTPUT 1 -s 192.168.1.2 -j ACCEPT
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.1.0/24
sudo bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'

Ubuntu 9.10

sudo iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT
sudo iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24
sudo bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'

Packages

ffalarms
dates
openssh-sftp-server
tangogps
navit
zinnia
zinnia-tomoe-zh
enscribi
ttf-arphic-uming
elementary-sms?
elementary-alarm?
intone
intone-video
browser

Enscribi on OM2009

Step 1:

opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk
opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)
opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)
opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk


Step 2:

Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19) If enscribi is linked against the new libs then these symbolic links are obsolete.

ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0

Maybe link the old libs against the even older libs. But seems not to work.

cd /usr/lib
cp /location-of-old-libs-for-enscribi/* .
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0.9.9 libecore_evas-ver-pre-svn-01.so.0
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0.9.9 libecore_fb-ver-pre-svn-01.so.0
ln -s /usr/lib/libecore_input-ver-svn-02.so.0.9.9 libecore_input-ver-pre-svn-01.so.0
ln -s /usr/lib/libecore_job-ver-svn-02.so.0.9.9 libecore_job-ver-pre-svn-01.so.0
ln -s /usr/lib/libecore-ver-svn-02.so.0.9.9 libecore-ver-pre-svn-01.so.0
ln -s /usr/lib/libecore_x-ver-svn-02.so.0.9.9 libecore_x-ver-pre-svn-01.so.0
ln -s /usr/lib/libecore_x-ver-svn-02.so.0.9.9 libecore_txt-ver-pre-svn-01.so.0
ln -s /usr/lib/libedje-ver-svn-02.so.0.9.92 libedje-ver-pre-svn-01.so.0 
ln -s /usr/lib/libeina-ver-svn-02.so.0.0.2 libeina-ver-pre-svn-01.so.0
ln -s /usr/lib/libembryo-ver-svn-02.so.0.9.9 libembryo-ver-pre-svn-01.so.0
ln -s /usr/lib/libevas-ver-svn-02.so.0.9.9 libevas-ver-pre-svn-01.so.0

Step 3:

goto "setup" --> "keyboard" --> "enscribi"

To get a Chinese/Japanese input method. Ensure, that you have Chinese/Japanes fonts installed.

 opkg install task-fonts-truetype-chinese

http://trac.shr-project.org/trac/ticket/868


other tricks

A-GPS

agps.sh

agps-alm.py > /dev/ttySAC1

agps-alm.py

#!/usr/bin/python
#
# ublox AssistNow Online almanac downloader for Neo FreeRunner
#
# v0.1
#
# Wilfried Klaebe <wk-openmoko@chaos.in-kiel.de>
#
# Usage:
#
# agps-alm.py > /dev/ttySAC1
#

import sys
import socket
import re

user='your@mail.address'
pwd='pwdfromublox'

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('agps.u-blox.com',46434))

s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')

buf = s.recv(4096)
while True:
        b = s.recv(4096)
        if not b:
                break
        buf += b

h = {}

while True:
        (l,s,buf) = buf.partition('\n')
        l = l.rstrip('\r\n')
        #
        sys.stderr.write(l+'\n')
        #
        if l == "":
                if 'content-length' in h and h['content-length'].isdigit() and 'content-type' in h and h['content-type'] == 'application/ubx':
                        sys.stdout.write(buf[:int(h['content-length'])])
                sys.exit(0)
        #
        m = re.search('\\A(.+): (.+)\\Z',l)
        if m:
                h[m.group(1).lower()] = m.group(2).lower();


Hardware related

Bicycle

Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance.

Wishlist for this USB-Charger:

  • 5V, 500-1500mA output (through diodes or MOSFET)
  • Voltage, Frequency (should be dynamohub independable)
  • USB-Device (maybe with USBprog)

nice to

  • 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)
  • buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)
Personal tools

Software related

Distributions

OpenWrt

append "arch s3c24xx 1" to /etc/opkg.conf


Useful packages:

opkg install openssh-sftp-server


SHR

Installation

ubi - ubinized for flashing with NeoTool

ubifs - UBIFS


Problems

with shr-lite-eglibc-ipk--20100115-om-gta02.rootfs @ uImage-2.6.32.3-oe1+gitr1+5827b20d022fb47ce9c9731d0fb894d361e16ffe-r4-om-gta02.bin booted with qi-ubi-s3c2442-1.0.2-r0+gitr0+c38b062a609f1442e6a9e13005cfbdfd59a5ac0d.udfu


  • whitescreen(ofstarving) from resuming and dimming, sometimes the lock-screen appears

Workaround: edit /etc/phonefsod.conf

auto_suspend = never /maybe normal would work also...

USB-Networking

OpenWrt

/etc/config/network

config interface lan
option proto static
option ifname eth0
option ipaddr 192.168.0.202
option netmask 255.255.255.0
option gateway 192.168.0.200
option dns 208.67.222.222

Without modifying the /etc/config/network

sudo iptables -I INPUT 1 -s 192.168.1.1 -j ACCEPT
sudo iptables -I OUTPUT 1 -s 192.168.1.2 -j ACCEPT
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.1.0/24
sudo bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'

Ubuntu 9.10

sudo iptables -I INPUT 1 -s 192.168.0.202 -j ACCEPT
sudo iptables -I OUTPUT 1 -s 192.168.0.200 -j ACCEPT
sudo iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24
sudo bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'


Packages

ffalarms
dates
openssh-sftp-server
tangogps
navit
zinnia
zinnia-tomoe-zh
enscribi
ttf-arphic-uming
elementary-sms?
elementary-alarm?
intone
intone-video
browser

Enscribi on OM2009

Step 1:

opkg install http://www.opkg.org/packages/zinnia_0.04_armv4t.ipk
opkg install http://www.opkg.org/packages/0_zinnia-tomoe-ja_0.6.0-20080911_armv4t.ipk (for Japanese support)
opkg install http://www.opkg.org/packages/0_zinnia-tomoe-zh_0.6.0-20080911_armv4t.ipk (for Chinese support)
opkg install http://www.opkg.org/packages/enscribi_0.2.0_armv4t.ipk


Step 2:

Create symbolic links for the old libs (tested with om2009-unstable 17-Aug-2009 17:19) If enscribi is linked against the new libs then these symbolic links are obsolete.

ln -s /usr/lib/libecore_evas-ver-svn-02.so.0 libecore_evas-ver-pre-svn-01.so.0
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0 libecore_fb-ver-pre-svn-01.so.0
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_x-ver-pre-svn-01.so.0
ln -s /usr/lib/libecore_input-ver-svn-02.so.0 libecore_input-ver-pre-svn-01.so.0
ln -s /usr/lib/libecore_x-ver-svn-02.so.0 libecore_txt-ver-pre-svn-01.so.0
ln -s /usr/lib/libedje-ver-svn-02.so.0 libedje-ver-pre-svn-01.so.0 
ln -s /usr/lib/libembryo-ver-svn-02.so.0 libembryo-ver-pre-svn-01.so.0
ln -s /usr/lib/libecore_job-ver-svn-02.so.0 libecore_job-ver-pre-svn-01.so.0
ln -s /usr/lib/libevas-ver-svn-02.so.0 libevas-ver-pre-svn-01.so.0
ln -s /usr/lib/libecore-ver-svn-02.so.0 libecore-ver-pre-svn-01.so.0
ln -s /usr/lib/libeina-ver-svn-02.so.0 libeina-ver-pre-svn-01.so.0

Maybe link the old libs against the even older libs. But seems not to work.

cd /usr/lib
cp /location-of-old-libs-for-enscribi/* .
ln -s /usr/lib/libecore_evas-ver-svn-02.so.0.9.9 libecore_evas-ver-pre-svn-01.so.0
ln -s /usr/lib/libecore_fb-ver-svn-02.so.0.9.9 libecore_fb-ver-pre-svn-01.so.0
ln -s /usr/lib/libecore_input-ver-svn-02.so.0.9.9 libecore_input-ver-pre-svn-01.so.0
ln -s /usr/lib/libecore_job-ver-svn-02.so.0.9.9 libecore_job-ver-pre-svn-01.so.0
ln -s /usr/lib/libecore-ver-svn-02.so.0.9.9 libecore-ver-pre-svn-01.so.0
ln -s /usr/lib/libecore_x-ver-svn-02.so.0.9.9 libecore_x-ver-pre-svn-01.so.0
ln -s /usr/lib/libecore_x-ver-svn-02.so.0.9.9 libecore_txt-ver-pre-svn-01.so.0
ln -s /usr/lib/libedje-ver-svn-02.so.0.9.92 libedje-ver-pre-svn-01.so.0 
ln -s /usr/lib/libeina-ver-svn-02.so.0.0.2 libeina-ver-pre-svn-01.so.0
ln -s /usr/lib/libembryo-ver-svn-02.so.0.9.9 libembryo-ver-pre-svn-01.so.0
ln -s /usr/lib/libevas-ver-svn-02.so.0.9.9 libevas-ver-pre-svn-01.so.0

Step 3:

goto "setup" --> "keyboard" --> "enscribi"

To get a Chinese/Japanese input method. Ensure, that you have Chinese/Japanes fonts installed.

 opkg install task-fonts-truetype-chinese

http://trac.shr-project.org/trac/ticket/868


other tricks

A-GPS

agps.sh

agps-alm.py > /dev/ttySAC1

agps-alm.py

#!/usr/bin/python
#
# ublox AssistNow Online almanac downloader for Neo FreeRunner
#
# v0.1
#
# Wilfried Klaebe <wk-openmoko@chaos.in-kiel.de>
#
# Usage:
#
# agps-alm.py > /dev/ttySAC1
#

import sys
import socket
import re

user='your@mail.address'
pwd='pwdfromublox'

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('agps.u-blox.com',46434))

s.send('user='+user+';pwd='+pwd+';cmd=alm;lat=0;lon=0;pacc=40000000;\n')

buf = s.recv(4096)
while True:
        b = s.recv(4096)
        if not b:
                break
        buf += b

h = {}

while True:
        (l,s,buf) = buf.partition('\n')
        l = l.rstrip('\r\n')
        #
        sys.stderr.write(l+'\n')
        #
        if l == "":
                if 'content-length' in h and h['content-length'].isdigit() and 'content-type' in h and h['content-type'] == 'application/ubx':
                        sys.stdout.write(buf[:int(h['content-length'])])
                sys.exit(0)
        #
        m = re.search('\\A(.+): (.+)\\Z',l)
        if m:
                h[m.group(1).lower()] = m.group(2).lower();


Hardware related

Bicycle

Dynamo powered openmoko (and other USB-Devices/Host) using the frequency/voltage of the dynamo to gather information about speed and distance.

Wishlist for this USB-Charger:

  • 5V, 500-1500mA output (through diodes or MOSFET)
  • Voltage, Frequency (should be dynamohub independable)
  • USB-Device (maybe with USBprog)

nice to

  • 3d compass, altimeter, thermometer (with information of distance to map tunnels, dense forest, ...)
  • buttons for turning lights (on lowpower/on highpower/off), setting waypoints/audionotes, easy navigation of openmoko (scrolling/enter)