pavelmachek's Journal

Recent Entries

You are viewing the most recent 25 entries.

16th October 2007

1:38pm: Practical difference between UMTS and EDGE is bigger than you think
Author obviously has some Apple shares. Plus he failed to do basic research. EDGE has ping latency ~0.8second (6230 over bluetooth), while UMTS has ping latency ~0.2second (6151 over bluetooth). And yes, latency is very important here. 3second latency as soon as BTS decides you are idle is not nice, either, but ping on background takes care of that nicely ;-).

I got 6151 recently, and while I expected some speedup, it was bigger than I expected.

(Of course, if the phone's web browser is too slow to parse data, network speed will not matter at all.)

5th October 2007

12:31pm: Kohjinsha continued, and some photos/videos from holidays
Dear Kohjinsha, your machine has nice and small battery, but no, it is not 2480mWh battery, and no, your machine is not taking .6W while powered up. You used wrong units in your ACPI BIOS, you seem to have 2.5Ah battery, as is confirmed by its label. Please fix your BIOS.

I was reading some documents about powersaving, and EnergyStar were pretty serious about slowing down gigabit ethernet cards to 10/100mbit mode in case of idle. Now I know why: difference between no-cable and 100mbit is ~.3W, while difference between 100mbit and 1gbit mode is ~1.1W... which is quite a lot. And I assume it makes difference on the ethernet switch, too...

Oh, and last week I was on holidays, preparing some games for high-schoolers. At one point, we played with dominos a lot,

and did some algorithmic marching, too.


(All photos:
ksp24,
ksp25,
ksp26,
ksp27.)
12:10pm: Kohjinsha to play with
Kohjinsha miniPCs are quite nice toys. Less then 1kg. Unfortunately, their keyboard is totally horrible; both mechanically (they are hard to press and miss keystrokes), and they have some "creative" mapping ("]" besides "F10" in the very top row?! key with "+=" sticker sending right ctrl?). OTOH, at least it has a keyboard, not unusable thumb-joke like Samsung UMPC. (Plus, it would be nice to have a touchscreen; but joystick on the screen makes it almost usable in PDA mode, too).

Screen has non-standard 800x480 resolution... which took me a while to figure out, because windows use it in non-native 1024x600 (!). Configuring vesa driver is quite easy, configuring amd driver is quite tricky... so here's the xorg.conf.

Most other hardware seems to work; sound plays with me, bluetooth is USB and just works, but I expect problems with wifi (anyone knows what w35und is/where to get its sources? Someone apparently got it to work under fedora).

Ouch, cpu is slow; starting openoffice takes 30 seconds, which is bad but acceptable; unfortunately YaST2 -i takes ~4 minutes, which does not seem acceptable any more (opensuse 10.3-rc?). smart can perform installation in under 40 seconds....

27th September 2007

1:38am: Thanks for qtopia
Qtopia is now GPL, which is very good news... thanks, trolltech.

Now, question is how to make it nicely coexist with openmoko. So far, I added "telinit 4" into mokomenu, and did

cp /media/card/qtopia/etc/init.d/qpe /etc/rc4.d/
mv /etc/rc4.d/qpe /etc/rc4.d/S55qpe

...with opt pointing to backed up qtopia installation.

root@fic-gta01:/media/card/mp3$ ls -al /opt
lrwxrwxrwx 1 root root 23 Sep 21 18:02 /opt -> /media/card/qtopia/opt/

It seems to work.

Another good news is that openmoko-mediaplayer is quite easy to get to work, you just need to create ~/playlists, and kill pulseaudio. Good, I need an mp3 player.

14th September 2007

11:59am: openmoko presentation
I did an openmoko presentation at suse labs conference this week, in case you are interested, you can find it on atrey.

9th September 2007

12:12pm: binary-only drivers are evil
...even if they are just for GPS, and even if they are in userland. Unfortunately, openmoko is in such situation: gllin driver is needed for its gps to work.

gllin is C++ application... which means it locks you to particular version of kernel ABI, libc, and libstdc++. Unfortunately, openmoko project moved forward, and now uses different/incompatible ABI, libc, and libstdc++. Fortunately, theres a solution: just run gllin in the chroot. See http://wiki.openmoko.org/wiki/Gllin .

(Ouch and something funny happened to my galeon: it ignores apostroph key and/or switches me to different tab when I press it. Ouch...?!)

28th August 2007

12:52am: mujmail
Long time ago, I played with j2me application called mujmail -- to get usable mail client for a mobile phone. I hacked it into halfway-usable state at that point, and then moved on. Fortunately, Nguyen Son Tung and Martin Stefan picked that project up, and turned it into fully-usable state... it is certainly better than integrated client in Nokia 6230. You can get the sources in javaphone's CVS at sourceforge, and get binaries/description at mujmail.xf.cz. Try it out.

And now, strange things started to happen. There's reference from some blog, and one czech news server already wrote an article about it... Unfortunately, I don't thing the news server actually tried to run the software :-(, not sure about the blog. In september, news should go out in printed news... I hope they'll really try the software.

24th August 2007

12:35am: pygps on openmoko.
...somehow. I had to hack it a _lot_, because pygps was written for pygtk1.2, while openmoko uses pygtk2. I got basic display working (lat/lon/altitude/speed), sattelite list works, sattelite view works on pc but not on openmoko, and I'm now fixing map view. It does something, but I have trouble getting maps for testing. It is available in tui cvs, in pygps directory. (www.sf.net/projects/tui).

[Does someone know how to get maps in right format for pygps? It needs maps in constant number of meters per pixel, tagged by N'ing/E'ing (whatever that means). I can get maps in some other formats, but not in this one. Import from openstreetmaps would be very nice.].

15th August 2007

1:29am: So I did not win a new battery in nokia lottery...
...too bad. You may be more lucky.

Another electronic device tried to attack me today. No, I'm not a lucky winner of exploding battery, but I was trying to debug computer problems in nearby flat. I should have been warned by sparks and funny smell when I unplugged machine from AC power... but I was not, and was stupid enough to touch cable modem's metal parts. I got 220V... and then I found out that 220V is at the "safety ground" in half of flat. Oops. Connecting AC with two aluminium wires, is a very bad idea -- unfortunately it was popular in 1980 or so :-(.

9th August 2007

10:31am: ...to complement my typing speeds from last post, here are some numbers from "real" keyboards:

nokia 6230: 1:00
thinkpad x60: 13 sec.
zaurus 6 fingers: 25 sec.
zaurus thumbs: 20 sec.
(I should time olpc keyboard here, too. It will be interesting number.)

Ok, I guess that now I know why qwerty matters.

I played with openmoko a bit more, and got mp3 to play on incoming call: It has only one small problem -- I do not know how to detect that the other side hung up, and call is no longer pending (so I could kill madplay). Is that even supported by AT commands? gsmd certainly does not produce event for that :-(.

Ouch and... SIM card I was using for testing now expired completely. It had -9Kc of credit or so, but still worked okay for incoming calls; now it will not log into network any more. If you have pre-paid sim card you don't need any more... I guess I could use it.

#!/usr/bin/env python

# Usage: /data/libgsmd-tool -m shell | DISPLAY=:0.0 mokoringer.py

# Copyright 2007 Pavel Machek <pavel@suse.cz>
# GPLv2

import os
import sys
import re

if __name__ == "__main__":
while 1==1:
line = sys.stdin.readline()
print "Got line: " + line
if re.match("EVENT: Incoming call", line):
print "incoming call"
os.system("madplay /usr/share/openmoko/sounds/ringtone_squirrels.mp3 &")

24th July 2007

12:33am: Cellphone keyboards suck
...to complement my typing speeds from last post, here are some numbers from "real" keyboards:

nokia 6230: 1:00
thinkpad x60: 13 sec.
zaurus 6 fingers: 25 sec.
zaurus thumbs: 20 sec.
(I should time olpc keyboard here, too. It will be interesting number.)

Ok, I guess that now I know why qwerty matters.

I played with openmoko a bit more, and got mp3 to play on incoming call: It has only one small problem -- I do not know how to detect that the other side hung up, and call is no longer pending (so I could kill madplay). Is that even supported by AT commands? gsmd certainly does not produce event for that :-(.

Ouch and... SIM card I was using for testing now expired completely. It had -9Kc of credit or so, but still worked okay for incoming calls; now it will not log into network any more. If you have pre-paid sim card you don't need any more... I guess I could use it.

#!/usr/bin/env python

# Usage: /data/libgsmd-tool -m shell | DISPLAY=:0.0 mokoringer.py

# Copyright 2007 Pavel Machek <pavel@suse.cz>
# GPLv2

import os
import sys
import re

if __name__ == "__main__":
while 1==1:
line = sys.stdin.readline()
print "Got line: " + line
if re.match("EVENT: Incoming call", line):
print "incoming call"
os.system("madplay /usr/share/openmoko/sounds/ringtone_squirrels.mp3 &")

22nd July 2007

12:58pm: finger-usable soft-keyboard for openmoko
mokomenu.py now contains software keyboard (menu|input). To my suprise, I found out that 5x6 matrix of keys is perfectly usable on openmoko's touchscreen, using fingers. I experimented with layouts a bit, and result is phone-like layout (abc def) deformed for 5x6 matrix. You can check out the code in tui cvs.

I did some timing: (sentence tested was "tohle je takova mala testovaci veta. Asi by bylo fer zkusit to na nekolika ruznych telefonech.")

nokia 6230: 1:00
ericsson t68i + qwerty keyboard attached: 0:53
siemens sx1: 2:20
openmoko + phone_like() keyboard: 1:15

Results surprised me a bit. I expected qwerty keyboard attachment to do better. It also means that soft keyboard on openmoko should be usable.

I'll play with landscape mode a bit. Perhaps I can cram qwerty there and start typing using two thumbs?

11th July 2007

12:30am: I mean, I have pretty good eyes, and openmoko fonts are still way too small for me... indoors, in nice lightning conditions. They are pretty much unreadable outside.

Fortunately, solution is actually pretty easy... gtk uses textual theme definition, which defines look... and also font sizes:

--- /usr/share/openmoko-standard-ofic/gtk-2.0/contactspane Thu Jan 1 00:00:00 1970
+++ /usr/share/openmoko-standard/gtk-2.0/contactspane Thu Jan 1 00:23:26 1970
@@ -38,7 +38,7 @@
function = ARROW
}
}
- font_name = "Vera Sans 16"
+ font_name = "Vera Sans 26"
text[NORMAL] = "#666"
text[ACTIVE] = "#FFF"
text[SELECTED] = "#FFF"
... and so on, just add 10 to all font sizes you see. (Full diff is in tui cvs, theme.diff). +10 is still a bit small, but this time it is "small" not "are you joking".

26th June 2007

10:55am: Hack week & collie 2.6
There's a hack week in SUSE... and we are playing with 2.6 kernel on sharp zaurus sl-5500 here. Most of the stuff works, but we have one problem: collie only detects 16MB RAM, and I can't find where it is defined :-(.

25th June 2007

2:46pm: Big thanks for python on openmoko
...it means that scripting on openmoko is possible. I created mokomenu.py (it is in tui.sf.net project), and played with haptic feedback using vibrations.

16th June 2007

12:02am: Calls finally work on openmoko
With openmoko-devel-image-fic-gta01-20070611033225.rootfs.jffs2 image, gui starts, dialer seems to work, but gsmd is not there so nothing works. Script like this kicks it back to work

#!/bin/sh
echo 1 > /sys/class/leds/gta01\:vibrator/brightness
killall openmoko-dialer
killall gsmd
/etc/init.d/gsmd start
DISPLAY=:0.0 openmoko-dialer &
alsactl restore -f /home/root/om.mp3ring.alsa
echo 0 > /sys/class/leds/gta01\:vibrator/brightness

. (This, and similar scripts from previous entries are now in www.sf.net/projects/tui, in CVS). Another small script can be used for status monitoring... wav files are generated from Makefile using flite:

#!/bin/sh
cd /home/root
while true; do
if ps | grep gsmd | grep -v grep; then
echo "GSM present"
else
aplay no_gsm.wav
fi
if ps | grep gllin | grep -v grep; then
echo "GPS present"
else
aplay no_gps.wav
fi
if tail -8 /tmp/gps.nmea | grep "GGA.*,,,,"; then
echo "No fix"
aplay no_fix.wav
fi
# aplay ok.wav
sleep 5m
done

...now, I can call from openmoko, and I can receive calls, but it does not actually _ring_. I tried creating little script using libgsmd-tool -m shell, but libgsmd-tool buffers its output so it is unusable for this.

Oh and BTW congratulations go to fic for first ~450 units being assembled. (I hope it means some semi-stable snapshot is hiding somewhere, maybe even one that rings :-).

12th June 2007

3:12pm: phase1 neo recovered
I thought phase1 neos have new enough uboot, but apparently not. minicom /dev/ttyACM0, then nand erase clean rootfs was the magic sequence that helped.

11th June 2007

11:18pm: Updated phase1 neo
...and I should not have done that. (It was first time I attempted flash on phase1 neo). Now it will not boot; it mounts root but it complains about not finding init. I tried reflashing root partition and uImage 3 or so times with no luck. I can still use phase0 neo, but I'd like to get newer hardware up. uboot still works, and kernels still respond, so I do not think it is time for devirginator, yet... Any ideas welcome.
1:02am: Dazzled and confused...
...but trying to continue.

To get working debian/arm installation, do: (thanks a lot for all the suggestions, btw. Biggest problem was that for some reason it does not work with _etch_. It works ok with sarge).


debootstrap --foreign --arch arm sarge /data/debian-arm/

(it does not work with etch). Hmm, 30MB .deb apt cache, 12MB locales.

chroot debian-arm debootstrap/debootstrap --second-stage

Hooray, after 15minutes of cpu time, --second-stage finished. apt-get
clean to get rid of .deb cache.
apt-get remove info ppp ipchains man-db klogd liblocale-gettext-perl

python-gtk2 is 73MB :-(
flite is 13.5MB.
gpsd is 2.5MB.

...and it works perfectly in chroot... on zaurus. On openmoko, illegal instruction is all I can get :-(. I do not understand... both debian/arm and openmoko should be OABI, _and_ it should not even matter, because it is only C calling convention and kernel seems to talk both OABI and EABI. Strange.

Suggestion of installing angstrom and running gllin in chroot looks quite attractive now... but I'd quite like to understand why the illegal instruction.

8th June 2007

12:16am: Debian/arm: CD images
Help me: what is reasonable binary distro to install on openmoko?
I'd like minimal .tar.gz of debian, but they only have CD images (and they are installer images).
Angstrom is not an option, since it will not be compatible with gllin AFAICT.

7th June 2007

10:22am: Foals are born in slippers...
...which is something they did not tell me in school. Oh well.

6th June 2007

1:30am: What is wrong with openmoko
Neo hardware will get fixed in future, now lets look at 'what's wrong with openmoko software'.

Again, the basics are right. openmoko runs X, with ipkg packaging system.

(Hmm, did I mention in previous post that neo screen flickers, particulary when cpu is under load? ...aha, and that sim card holder & microSD card holder are really misdesigned).

Openmoko also runs gtk, which is pretty much okay for stylus applications. Except that... there's no stylus.

Currently, there's header on the top of the screen and footer on the bottom of screen, each of them too small to press by finger. I believe they should me merged (at top of the screen?) so that they can be operated by finger. Searching for stylus for switching between applications is not nice.

There are very few finger apps planned. Contacts application is designed to be stylus-only. That unfortunately means that calling person from your contact list needs stylus. Bad, bad, bad.

[Possible suggestion: Use dialer application to select contacts. When user types a number, simultaneously search contacts for substring matches, in t-9 style. 72835 should match pavel or qatel etc. There's enough space in dialer window.]

Pressing gtk buttons using your fingers sucks. First, your finger is too big, so you don't have any feedback that button is pressed. [Suggestion: run vibrator motor for 50msec, and draw huge red circle around the button]. Second, physical buttons react on press, while gtk buttons react on release. (Also physical buttons autorepeat, which is very important for direction arrows and backspace keys).

It would be also nice to allow buttons that take little screen space but have large active area for easy finger pressing. (I can dream, right?)

Openmoko team is aware of these issues, unfortunately, solving them is not quite easy -- gtk has stylus assumptions built in, and changing toolkits is not easy.
12:42am: Whats wrong with neo hardware
First, let me say that openmoko is very nice project. They got the basic stuff right: hardware is mostly documented (with ugly exception of gps), and software is open source (with ugly exception of ... you guessed it, gps, and gsm firmware, if you count that).

Hardware... is cool. It has a big hook for lanyard. There are no buttons to spoil the looks.

...and we are at the first problem. It has just two hardware buttons, power and aux. Oops, not even cursor arrows + green + red + context keys... and that's badness number one.

Hardware is also quite big, about as big as siemens sx1, and about as heavy. It is not a nice small cellphone. You leave your fingerprints all over the screen...

...which brings us to badness number two. Screen. Neo has cool 640x480 screen. Unfortunately, it is unreadable at direct sunlight. If you shield the screen with your other hand, you are able to see something on screen... not good. Small fonts used by openmoko only make that worse.

And then there's problem number three. There's no place for stylus in Neo. That makes neo incompatible with large base of existing applications, because they need stylus... and incompatible with most of software from openmoko project, but that's topic for another rant.

Ouch and did I mention that openmoko does not have EDGE or UMTS connectivity?

So far, Neo is a very nice PDA with a GSM modem and great GPS. It is not a good cellphone in this version. I believe that is going to be fixed.

4th June 2007

10:43pm: What is going on with GPLv3?
The ban on tivoization applies to any product whose use by consumers,
even occasionally, is to be expected. GPLv3 tolerates tivoization only
for products that are almost exclusively meant for businesses and
organizations. (The latest draft of GPLv3 states this criterion
explicitly.)

...ugh, what is going on here? Freedom of home users is protected,
but if you are a business user, it is okay to screw you? What is going
on here? Do they have some specific application in mind? ATM machines?

Oh, and here's useful piece of code if you want your openmoko to
connect to bluetooth network. That makes it possible to ssh from
nearby zaurus, using _its_ keyboard, instead of horrible softkeyboard
openmoko uses...

#!/bin/sh
pand --connect 00:10:60:AB:25:9A
while true; do
ifconfig bnep0 10.1.0.5 up
sleep 1
done

1st June 2007

3:06pm: gps on openmoko
I played a bit more with hammerhead in openmoko... and it seems to work nicely. If I launch my scripts exactly once, I do not even get a time travel. GPS eats about 10% of cpu, and along with bluetooth, they drain battery in 3.5 hours -- not too good and not too bad.

(It is actually design problem; bluetooth is on usb, and that means cpu needs to be fully working in order for bluetooth to work. That's bad bad bad, as standby with bluetooth on will be ~8hours. Ouch).

Yes, I'm still using binary-only gllin. Someone asked me for screenshots, but I do not have any, I just connect from symbian/java applications over bluetooth.
Powered by LiveJournal.com