Erlang Userland for OpenMoko
The following is text from my user page on the OpenMoko wiki, which is now sadly read-only and largely defunct. In 2007, I bought a phase-1 Neo1973; I gave it away in 2010 or 2011.
Tony Garnock-Jones, tonygarnockjones@gmail.com.
I own a phase-1 Neo1973.
Erlang Userland
I’m running Erlang with GTK and serial-port extensions on my phone, using it as an openmoko userland replacement (for gsmd/dialer/addressbook etc.).
- “git clone git://github.com/tonyg/erlang-oe.git” for bitbake scripts for building erlang, erlang-gtknode and erlang-serial ipkg packages
- “git clone git://github.com/tonyg/erlang-serial.git” to track the serial-port erlang interface program
- “git clone git://github.com/tonyg/erlang-openmoko.git” to track my userland (gsmd/dialer etc) code
Status
See the README for the current status, TODO and bugs. Currently 2090 non-blank, non-comment lines of code.
Core (non-UI):
- Clean(ish) API for scripting phone functionality (in Erlang)
- Takes calls, makes calls, reliably enough for me to use as an everyday phone
- Sends, receives, archives SMSes
- DTMF send support during a call
- Battery and charge-state monitoring
- Detects when you might be connected to a dumb charger (no UI for forcing fast charge yet)
- Powers GSM modem off when the phone is shut down
- About 4-5 hours of battery life when idle - this will improve as general GTA01 power management improves
Non-GUI user interface:
- Plays an mp3/ogg file and vibrates when ringing
- Vibrates on SMS receive
- Switches ALSA profiles between in-call state (gsmhandset)/idle state (stereoout)
- Press “power” to activate screen lock; press “aux” to release screen lock
GUI user interface:
- Really, really, really ugly.
- Dims screen on user inactivity
- Blanks screen and locks touchscreen on further inactivity
- Very basic addressbook
- Very basic SMS compose/display facility (no T9 yet)
- Very basic dialer
gsmhandset.state echoes your own voice
I’ve a tentative fix for this - here’s the patch against gsmhandset.state. The alsamixer setting is labelled “Bypass” in the UI, and it’s way over to the right, just after the “Amp …” settings and just before “DAI Mode”.
--- old/gsmhandset.state 2008-01-28 12:29:47.000000000 +0000
+++ new/gsmhandset.state 2008-01-28 12:29:23.000000000 +0000
@@ -55,8 +55,8 @@
comment.range '0 - 7'
iface MIXER
name 'Bypass Playback Volume'
- value.0 5
- value.1 5
+ value.0 0
+ value.1 0
}
control.7 {
comment.access 'read write'