User:Nukama
From Openmoko
Contents |
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 | | | | | | | | eth0 192.168.1.1 |-----| eth0 192.168.1.2 | | | ISP-----| ppp0 DHCP | | ue0 192.168.0.200 |-----| usb0 192.168.0.202 | |__________________| |____________________| |____________________|
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
Adjust the firewall of your router to pass packets from your Freerunner.
pass in quick on $intif inet from 192.168.0.202 to any flags S/SA keep state label "USER_RULE: Openmoko Freerunner"
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();
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)