How to allow Fischertechnik RoboPro and the Robo TX controller to work under Linux with Wine

Install the bluez bluetooth stack for Linux. The following assumes you are using Bluez 4.X. For Bluez 5.X some things have changed, e.g. the pin codes are no longer stored as clear text. I will write a follow-up for Bluez 5.X in the near future.

Note: A shell prompt of „#“ means to execute the command as the root user. „$“ means to execute the commands as a normal user.

Get the ID aka „bdaddr“ of the ROBO TX Controller with:

# hcitool scan

The output should be similar to the following:

Scanning …
00:12:34:56:78:9A ROBO TX-633

That should be the same number as can be seen under „Info“–>“Bluetooth“ on the ROBO TX Controller itself.

Edit the file /etc/bluetooth/rfcomm.conf to set the ID as the device address for a rfcomm device. I am using the rfcomm0 as the device on the Linux side, so my rfcomm.conf looks like the following:

#
# RFCOMM configuration file.
#
rfcomm0 {
# Automatically bind the device at startup
bind no;

# Bluetooth address of the device
device 00:12:34:56:78:9A;

# RFCOMM channel for the connection
channel 1;

# Description of the connection
comment „Fischertechnik ROBO TX Controller“;
}

Then add the Bluetooth PIN to the local bluetooth device configuration for the ID of the ROBO TX. In case the bluetooth device of the Linux host is working correctly, there should be a directory under /var/lib/bluetooth/ with its name being identical to the address of the local bluetooth device, e.g.:

/var/lib/bluetooth/98:76:54:32:10:FF/

If not present add, if present, extend a file named „pincodes“ (one word) below that directory to hold the PIN of the ROBO TX Controller. The files should have an entry like the following:

00:12:34:56:78:9A 1234

The part after the ID from the ROBO TX Controller is the PIN.

Now try to connect the rfcomm device with the ROBO TX Controller by executing the following command:

# rfcomm connect 0

In the example the rfcomm device will be /dev/rfcomm0.

The output should be something like:

Connected /dev/rfcomm0 to 00:13:7B:48:B5:EE on channel 1
Press CTRL-C for hangup

For the following, the connection should not be terminated as the rfcomm device will not exist below „/dev/“ if not connected.

Now add a symbolic link to the rfcomm device below ~/.wine/dosdevices named e.g. „com1“:

$ ln -s /dev/rfcomm0 com1

Note: I had not to add a colon after „com1“ for the name of the link on my installation.

Check the permissions of the rfcomm device. The account using ROBOPro via Wine should be able to read and write to the rfcomm device. On my machine I have added that account to the „dialout“ group and the persmission of the rfcomm device are ug+rw (= 660):

$ ls /dev/rfcomm0
crw-rw---- 1 root dialout 216, 0  4. Jan 00:30 /dev/rfcomm0

Start regedit with wine:

$ wine regedit

And add a key for the com port below [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum]

The key path must be

[...\Enum\SERIAL\COM1\COM1]

In case you have defined a different comport than COM1, you must use its number and not 1 (one) for the registry entries and all of the following.

Under the last COM1 key add the following three text entries:

ClassGUID = {4D36E978-E325-11CE-BFC1-08002BE10318}
FriendlyName = Serial Port 1 (COM1)
PortName = COM1

Here is a screenshot showing the registry entries described above:

regedit screenshot com1
Screenshot of COM1 registry entries to allow Fischertechnik RoboPro to access the COM1 port under Linux and Wine.

The ClassGUI (GUI = Globally Unique Identifier) is the GUID for serial ports (see, e.g. List of Device Class GUID)

Now start ROBOPro with Wine and open the COM/USB settings dialog. Select the „ROBO TX Controller“ under „Interface“ and select „USB/Bluetooth“ under „Port“. Clicking „OK“ shoud open a new dialog named „Select USB device“. Select the „Bluetooth“ option under „Connection type“ and activate the „Show all COM ports“ option under „Bluetooth port:“. You should now be able to select „COM1“. After selecting „COM1“ close the dialog clicking on „OK“. Do not forget to test the connection.

I was able to programm and update the firmware of the ROBO TX Controller via Wine under Linux with the settings described above.