Site Tools


Sidebar

hardwarerelated:mobile_phone:nokia_e90

Nokia e90 communicator for an admin

The Nokia e90 was my first smartphone, bought in 2008. Provides ssh and vnc. Nice features like gps, wlan, sip. My hints here are focused on getting the e90 to fill my admin-needs. I want to listen to the podcasts from https://chaosradio.ccc.de/ . A recent thread on www.tlug.de (thanks Nils Dettenbach and others) made me regard the e90, and nokia even lets me install software, unlike other popular phones.

applications

internet-access from linux-pc via bluetooth

I want to access the internet using the nokia e90 via bluetooth from a thinkpad running linux Debian unstable. Kernel with the bluetooth-parts at least as modules is required. The part for pin-authentication uses dbus now as backend, this was sdp-daemon bevore.

first time setup

first steps

  1. apt-get install bluez-utils pkg-config libdbus-1-dev minicom
  2. now activate bluetooth if needed, pressing <Fn>+<F5> does this on the thinkpad.
  3. hciconfig hci0 up
  4. killall hcid # stops the running hcid
  5. hcid -nds # execute in a terminal for debugging. If you get 'org.bluez not found' reboot the system.
  6. hciconfig -a # should show informations on your computers bluetooth-adapter now
  7. hcitool scan # now searches for bt-devices. If the nokia e90 is appropriately configured it can be seen here
  8. l2ping <bt-address> # now pinging should work, bt-address is the bluetooth-address of the nokia e90
  9. sdptool browse # browses the available services
  10. sdptool search DUN # this searches for the DialUpNetworking service, should be 'channel 2' at the e90
  11. Now we need an agent for the pin-handling, on Debian unstable it has to be compiled and then be started:
    • cd /usr/share/doc/bluez-utils/examples
    • zcat passkey-agent.c.gz >passkey-agent.c # lets keep the original file as its part of the bluez-utils package
    • make # build the passkey-agent
    • mv passkey-agent /usr/local/bin
    • /usr/local/bin/passkey-agent --default 8342 # this starts the passkey-agent using 8342 as pin

serial connection over bluetooth

rfcomm connect 0 <bt-address> 2  # This starts the connection - the pin is now requested on the e90. You can now on the
      # nokia e90 'authorize' the connection to be established without requesting the pin each time.  I guess its just 
      # protected by the bluetooth-address of the device.

emacs /etc/bluetooth/rfcomm.conf  # an entry for rfcomm0 gets created so accesses trigger the connectionin future

minicom session

Now run 'minicom' and configure /dev/rfcomm0 as serial line. Talk to the e90 executing 'ATZ' resets, 'AT+CGDCONT=1,,"internet.t-mobile"' and 'ATD*99***1#' should produce no errors and will result in a ppp-connection. If that works stop minicom. An Example-session:

                 Press CTRL-A Z for help on special keys

AT S7=45 S0=0 L1 V1 X4 &c1 E1 Q0
OK
ATZ
OK
AT+CGDCONT?
+CGDCONT: 1,"IP",,,0,0

OK
AT+CGDCONT=1,"IP","internet.t-mobile"
OK
ATD*99***1#
CONNECT
~ÿ}#À!}!} } }

the chatfile

cat >/etc/ppp/chat_nokia_e90 <<EOT
ABORT ERROR
'' AT
OK ATZ
OK AT+CGDCONT=1,"IP","internet.t-mobile"
OK ATD*99***1#
CONNECT ''
EOT
# for other ISP than t-mobile you have to replace internet.t-mobile with the value from the e90 menu
# tools->settings->connection->Access points->ISP-internet-entry->Access point name

the ppp-configfile

cat >/etc/ppp/peers/tmobilestart_nokia_e90 <<EOT
noauth
connect "/usr/sbin/chat -v -f /etc/ppp/chat_nokia_e90"
debug
/dev/rfcomm0
230400
defaultroute
usepeerdns
noipdefault 
crtscts
noccp
ipcp-accept-remote
ipcp-accept-local 
EOT

tail -f /var/log/messages & # lets look at the logfile
pon tmobilestart_nokia_e90  # and lets dial in

daily usage

  • Enable bluetooth on the e90, 'visible for all' is not needed any more
  • Any access to /dev/rfcomm0 triggers establishment of the bluetooth-connection, so 'pon tmobilestart_nokia_e90' is all you need now.

obexfs

What is it? Alternatives?

This provides access to the nokia e90 memory using the obex protocoll. The memory is mounted like a usual filesystem. Bandwith when accessing via bluetooth is 23kbyte/sec. Dunno what the bottleneck is there, i/o to the memory is it not (becaus e usb-transfer is faster), its also not the bluetooth-throughput (because internet-usage from a pc via bluetooth is faster).

Accessing the e90 via wlan with opexftp (-n option) didnt succeed here, apparently the obex-service is only provided via bluetooth and maybe irda. Using the usb-cable and mounting the e90 as usb-storage-device is the fastest way.

installing and finding the obex-channel

  1. compile a kernel with CONFIG_FUSE_FS as module or build in
  2. modprobe fuse
  3. apt-get install obexfs obexftp
  4. activate bluetooth on the e90
  5. hcitool inq # scan for the e90, get the bluetooth-address
  6. sdptool browse 00:1A:89:C1:21:A6 # can be used to look for the phones services

testing with obexftp

$> obexftp -b 00:1A:89:C1:21:A6 -l # this looks for a channel on your device providing obex-services. Example
Browsing 00:1A:89:C1:21:A6 ...
Channel: 11
Connecting...done
Receiving "(null)"... <?xml version="1.0"?>
<!DOCTYPE folder-listing SYSTEM "obex-folder-listing.dtd"
  [ <!ATTLIST folder mem-type CDATA #IMPLIED>
  <!ATTLIST folder label CDATA #IMPLIED> ]>
<folder-listing version="1.0">
   <folder name="C:" user-perm="R" mem-type="DEV" label="Phone memory"/>
   <folder name="E:" user-perm="RW" mem-type="MMC" label="NO NAME"/>
</folder-listing>done
Disconnecting...done

# Channel 11 was chosen. 'sdptool browse <bt>' did show the servicename 'OBEX File Transfer' for this channel.

# So we have directories C: and E: here. We can traverse those step by step
$> obexftp -b 00:1A:89:C1:21:A6 -l C:/     
[...]
   <folder name="DATA" modified="20070628T110514Z" user-perm="RW" mem-type="DEV"/>
[...]
$> obexftp -b 00:1A:89:C1:21:A6 -l C:/DATA/     
[...]
   <folder name="Activenotes" modified="20071211T220908Z" user-perm="RWD" mem-type="DEV"/>
   <folder name="Documents" modified="20071211T220558Z" user-perm="RW" mem-type="DEV" label="Documents"/>
   <folder name="Games" modified="20070612T000002Z" user-perm="RW" mem-type="DEV" label="Games"/>
[...]

mounting the obex-filesystem

  1. mkdir /mnt/e90 # create mountpoint
  2. obexfs -b 00:1A:89:C1:21:A6 -B 11 /mnt/e90 # lets mount it. The nokia e90 is now accessable under the mountpoint.
  3. obexfs -b 00:1A:89:C1:21:A6 -B 11 – -d -f /mnt/e90/ # this could be used for debugging. Wont detach from console.
  4. fusermount -u /mnt/e90 # use this for umounting
  5. extension for automounter is possible ofcourse
hardwarerelated/mobile_phone/nokia_e90.txt · Last modified: 2024/03/03 06:54 by chris