Tuesday, January 8, 2008

Nokia E90 Progress

Summary

Trying to get the Nokia E90 Communicator and the associated Digital Pen working but seem not to be able to get the E90 to work with PC Suite running on Windows 2000 as a client on a VMWare host on SuSE 10.2 Linux.

Whatever I do causes VMWare to freeze, requiring a reboot of the entire Linux host.

The PC Suite will not connect to the E90 even when I remove the memory chip that serves as the USB thumbdrive.

== Basic Issue ==

The issue is a power struggle between the Linux OS and VMWare for a USB automount.

When I plug in the E90 it offers two modes: "PC Suite" or "Data Transfer".

The former is functional only when connected to a Windows Session running Nokia's PC Suite. This provides synchronization with Outlook and other services of PC Suite.

The latter serves as an automounted USB thumbdrive to either Win2k or the host Linux OS.

When you plug in a USB device HAL grabs it and automounts it. When you subsequently run VMWare there is an option under VM > Removable Devices > Nokia E90 to wrest control of the device from Linux and connect it to the VMWare client Win2K session.

The last is the part that is not working. When I do VM > Removable Devices > Nokia E90 the VMClient freezes and with it the entire Linux session.

== Crash Resolution ==

I can press a bunch of keys and eventually close the Win2K client and return control to Linux. (But I haven't figured out which combos actually make the switch - at this point VMWare is responding very slowly.) At this point the Ctrl+ options and any caps lock functions are gone, as are any key repeat functions, page up or down and so forth. basically the x-client is trashed. so I reboot.

=== Experimentation ===

I've tried various different sequences of plugging in the USB; without Win2K running, without even VMWare running, etc.

+ Absent VMWare and Win2k the USB functions exactly as desired in that case, i.e., as a thumbdrive.

+ I tried wresting control by VMWare without a client session but that option is greyed out if there is no client session running.

+ I then started a client session. Wresting control resulted in connecting to the E90 in data transfer mode with no crash.

But it cannot now connect to PC Suite. The resulting help file says to disconnect and reconnect, which will prolly invoke the Linux automount.

Howevah, In the Nokia E90 under Tools > Settings > Connections > USB there is an option to change the type of connection. If you change it from data Transfer to PC Suite you get a nag screen but the system does not crash. However it still not recognize the Windows PC Suite.

So once again I wrest control:

When I plug in the E90 in PC Suite mode Win2K freezes and with it the VMWare host and the entire linux machine. goto ´ćrash resolution' above. interestingly, the mouse functions perfectly.

After a while the client session crashes, returning me to the host.

I checked dmesg and messages and find no obvious culprits. What happens when I plug in the E90 is:

It is detected and automounted as sda1

When I select PC Suite mode it is effectively unplugged, but not unmounted.

Then apparently the reconnecting as a PC Suite mode fails. Here is messages:

Recognition
Nov 12 10:47:52 P1610 kernel: usb 1-1: new full speed USB device using uhci_hcd and address 2
Nov 12 10:47:52 P1610 kernel: usb 1-1: new device found, idVendor=0421, idProduct=04cf
Nov 12 10:47:52 P1610 kernel: usb 1-1: new device strings: Mfr=1, Product=2, SerialNumber=3
Nov 12 10:47:52 P1610 kernel: usb 1-1: Product: Nokia E90
Nov 12 10:47:52 P1610 kernel: usb 1-1: Manufacturer: Nokia
Nov 12 10:47:52 P1610 kernel: usb 1-1: SerialNumber: 353659011534977
Nov 12 10:47:52 P1610 kernel: usb 1-1: configuration #1 chosen from 1 choice
Nov 12 10:47:53 P1610 kernel: SCSI subsystem initialized
Nov 12 10:47:53 P1610 kernel: Initializing USB Mass Storage driver...
Nov 12 10:47:53 P1610 kernel: scsi0 : SCSI emulation for USB Mass Storage devices
Nov 12 10:47:53 P1610 kernel: usb-storage: device found at 2
Nov 12 10:47:53 P1610 kernel: usb-storage: waiting for device to settle before scanning
Nov 12 10:47:53 P1610 kernel: usbcore: registered new driver usb-storage
Nov 12 10:47:53 P1610 kernel: USB Mass Storage support registered.
Nov 12 10:47:54 P1610 kernel: Vendor: Nokia Model: E90 Rev: 1.0
Nov 12 10:47:54 P1610 kernel: Type: Direct-Access ANSI SCSI revision: 00
Nov 12 10:47:55 P1610 kernel: usb-storage: device scan complete
Nov 12 10:47:55 P1610 kernel: SCSI device sda: 3969799 512-byte hdwr sectors (2033 MB)
Nov 12 10:47:55 P1610 kernel: sda: Write Protect is off
Nov 12 10:47:55 P1610 kernel: sda: Mode Sense: 03 00 00 00
Nov 12 10:47:55 P1610 kernel: sda: assuming drive cache: write through
Nov 12 10:47:55 P1610 kernel: SCSI device sda: 3969799 512-byte hdwr sectors (2033 MB)
Nov 12 10:47:55 P1610 kernel: sda: Write Protect is off
Nov 12 10:47:55 P1610 kernel: sda: Mode Sense: 03 00 00 00
Nov 12 10:47:55 P1610 kernel: sda: assuming drive cache: write through
Nov 12 10:47:55 P1610 kernel: sda:
Nov 12 10:47:55 P1610 kernel: sd 0:0:0:0: Attached scsi removable disk sda
Nov 12 10:47:55 P1610 kernel: sd 0:0:0:0: Attached scsi generic sg0 type 0
Nov 12 10:47:57 P1610 hald: mounted /dev/sda on behalf of uid 1000

Change to PC Suite mode
Nov 12 10:48:02 P1610 kernel: usb 1-1: USB disconnect, address 2
Nov 12 10:48:02 P1610 hald[2650]: forcibly attempting to lazy unmount /dev/sda as enclosing drive was disconnected
Nov 12 10:48:02 P1610 kernel: scsi 0:0:0:0: rejecting I/O to dead device
Nov 12 10:48:02 P1610 hald: unmounted /dev/sda from '/media/Nokia 2G' on behalf of uid 0

Rediscovery
Nov 12 10:48:03 P1610 kernel: usb 1-1: new full speed USB device using uhci_hcd and address 3
Nov 12 10:48:03 P1610 kernel: usb 1-1: new device found, idVendor=0421, idProduct=04ce
Nov 12 10:48:03 P1610 kernel: usb 1-1: new device strings: Mfr=1, Product=2, SerialNumber=0
Nov 12 10:48:03 P1610 kernel: usb 1-1: Product: Nokia E90
Nov 12 10:48:03 P1610 kernel: usb 1-1: Manufacturer: Nokia
Nov 12 10:48:03 P1610 kernel: usb 1-1: configuration #1 chosen from 1 choice
Nov 12 10:48:04 P1610 kernel: usbcore: registered new driver cdc_ether
Nov 12 10:48:04 P1610 kernel: rndis_host 1-1:1.12: RNDIS init failed, -32
Nov 12 10:48:04 P1610 kernel: usb%d: unregister 'rndis_host' usb-0000:00:1d.0-1, RNDIS device
Nov 12 10:48:04 P1610 kernel: unregister_netdevice: device usb%d/dff04800 never was registered
Nov 12 10:48:04 P1610 kernel: ------------[ cut here ]------------
Nov 12 10:48:04 P1610 kernel: kernel BUG at mm/slab.c:595!
Nov 12 10:48:04 P1610 kernel: invalid opcode: 0000 [#1]
Nov 12 10:48:04 P1610 kernel: SMP
Nov 12 10:48:04 P1610 kernel: last sysfs file:

Resolution?

+ Maybe I will try one more thing: to not accept the connection on the E90 until AFTER I have given control to the client session.


That worked, the E90 synched, then Win2K crashed. On restarting I'm back to the same thing, it hangs the entire machine.

+ Another option, connect it as for data transfer, then eject it and reconnect.

These simply do not work. additionally, the crash kills the caps capability of the keyboard as well as all Ctrl+ etc combinations.,

+ Ah. Try this: REMOVE the USB chip, using the E90 machine as phone only. Nope, that doesn't work either.