Short overview

The client, which access the BTnode, and the BTnode itselfs has different software tasks. The client builds up the command for the RFID reader M1-mini and sends the request over Bluetooth to the BTnode, and the BTnode forwards it to the wired M1-mini. The M1-mini interprets and performs the command. After performing the command, the M1-mini returns a reply. The reply contains the status and eventually some requested informations, which the BTnode sends back to the client.

BTnode acting as forwarder between client and RFID reader

In other words: the BTnode is acting as a simple forwarder between wireless (Bluetooth) and wired (Serial) interface. So the client retains the full control about the RFID reader M1-mini.

This site has three major parts. The first part handles the client side, and includes the communication protocol of the RFID reader M1-mini. Please notice that this page currently only covering Java. The second part describes the software running on the BTnode.


The client can be a workstation, laptop, PDA, mobile phone or similar. The only hardware prerequisite is the Bluetooth interface. The next requirement is an adequate API for the Bluetooth interface. The most common Bluetooth API is JSR 82 for Java. Its implemented in mostly mobile phone with Java and Bluetooth support. But its also possible to use an external JSR 82 implementation for J2SE offered from various companies.

We deliver a client software running on J2ME resp. on suitable mobile phones. The whole source code is open and will be distributed under BSD license. Prebuilded Java archives are available on the Downloads page, ready to use on mobile phones.

The Java package ch.ethz.rfidreader contains J2ME independent code and no GUI. So its compatible with J2SE and its possible to use the core with another graphical toolkit as e.g. AWT or Swing.

The package ch.ethz.j2me.rfidreader contains J2ME dependent code and a GUI using the LCDUI interface. This package also shows how to use the previous rfidreader package.

Communication protocol of M1-mini

The protocol specification document SkyeTekProtocol.pdf defines the data exchange between the host controller (the BTnode) and the SkyeTek RFID radio module. It specifies how the host controller can command the radio module in order to read and write to RFID tags and smart labels.

The SkyeTek Protocol supports ASCII format and binary format. There is a own implementation of the protocol written in Java. Its covered in the Java package ch.ethz.skyetek. The package implements the commands to identify, read and write tags just in binary format.


The BTnodes run a real time operating system called Nut/OS for the Atmel ATmega128 microcontroller. It is freely available as open source. Nut/OS provides the following features:

BTnut is a heavyset system software for the BTnodes, consisting the Nut/OS, BTnode specific drivers and a partial implementation of the Bluetooth stack.

Release v0.2 and greater (RFCOMM)
Release v0.1 (L2CAP)

LED code signification

The BTnode owns four LEDs in blue, red, yellow and green color. The colors has certain significations by the forwarder application:

Release v0.2 and greater (RFCOMM)
Release v0.1 (L2CAP)