User Tools

Site Tools


Sidebar

hardwarerelated:nokia_e90

Nokia e90 communicator for an admin

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 http://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

applications::navigation

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 # or get, compile and install it from http://dev.zuckschwerdt.org/openobex/wiki/ObexFs
  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/nokia_e90.txt · Last modified: 2018/06/10 02:17 by chris