Siemens TC65 Development Under Linux

Siemens does not support TC65 development under Linux, but all of the necessary tools for development are available under Linux. You'll need to go through the Siemens installation process on a Windows machine to extract the one file you need for development under Linux:
  1. Install the TC65 Java Development Kit under Windows. This requires a PC with a serial port running Windows, or Windows running under VMWare configured to have serial port access. I tried installing it under Wine 0.9.24, and the installer runs fine until it asks for a serial port. The installer can't find any serial ports, even though I had a working serial port under Wine. It is not necessary to connect the TC65 to the serial port during installation.
    1. The Sun JDK must be installed first. Install the 1.4.2 JDK provided by Siemens. The SMTK installer will not allow installation unless a JDK has been installed.
    2. Install the Siemens Mobility Toolkit (SMTK) by running its setup.exe. It will warn you that an IDE is not installed. It is not necessary to install an IDE; select 'continue the setup without IDE integration.'
    3. After the installation is complete, copy the file WTK/lib/ from the SMTK installation directory to your Linux system. This is the only file that's necessary from the SMTK to build TC65 applications. If you're new to TC65 development, you might also want to grab the WTK/src/examples directory and WTK/bin/build.bat.
  2. Install a Java 1.4.2 JDK on your Linux system if you don't already have one. Version 1.6.6 is reported to work.
  3. Install the Sun Java Wireless Toolkit 2.2 from Sun. This provides Linux versions of necessary tools such as 'preverify'. Version 2.2 is no longer available from Sun, but version 2.5.2 is reported to work.
At this point, it's possible to build the TC65 example programs under Linux, but Siemens only supports transferring code to the module with OTAP or via the serial port under Windows. However, the TC65 has an OBEX server running on the serial port which is activated with an undocumented AT command. With some minor modifications, ObexFTP can transfer files to the TC65. I used version 0.18, as newer versions had dependencies my SuSE 9.3 system couldn't satisfy. ObexFTP requires OpenOBEX, which you may already have installed. The necessary changes to ObexFTP are: ObexFTP must use the Siemens UUID when communicating with the TC65; this is requested by specifying '-U sie' on the command line. A typical command line looks like:
obexftp -t /dev/ttyS0 -U sie -l
The TC65 interprets an OBEX PUT as an append operation, so it's necessary to delete a file before copying it. The delete and copy can be done with a single command:
obexftp -t /dev/ttyS0 -U sie -k app.jar -p app.jar
If you accidentally do an append, the TC65 will give an ERROR response when trying to start the application.

If your TC65 has a USB port available (e.g., the DSB75), Linux will identify the TC65 as a modem, and allocate a TTY device for it (/dev/ttyACM0 on my SuSE system). The USB port also has an OBEX server running on it, and can be used just like a serial port:

obexftp -t /dev/ttyACM0 -U sie -l
Make sure you have read/write permissions on the USB TTY device. Note that it's not necessary to use ObexFTP's USB support, and this support probably won't work with the TC65 without further modifications. I haven't been successful getting PUT operations to work over the USB interface.

The OBEX server seems to have difficulties if multiple sessions are started too close together. Starting an OBEX session less than about three seconds after the previous session can cause the OBEX server to lock up, requiring a power cycle of the TC65.

Other TC65 Development Resources

Ricardo Guilherme Schmidt is developing JObexFTP, a Java implementation of OBEX designed to work with TC65 and TC65i modules.

dev65 Mailing List


Johann Wilhelm notes:
to get the serial-port running in wine you have to add some to the registry... in your wine.inf you need this:
wineprefixcreate should now create this key in your registry... then add in HKLM/HARDWARE/DEVICEMAP/SERIALCOMM a key named \Device\Serial0 with the value COM1 now the installer knows that this port is present.. windows does it like this but wine doesn't since a few years...
I haven't tested this.
None of the content on this page is supported or sanctioned by Siemens.
Copyright © 2006 John Temples (tc65-2 at xargs dot com)