Schlagwort-Archive: wine

ROBOPro and Fischertechnik ROBO TX via USB cable with openSUSE 13.1 (wine)

With openSUSE 13.1 I successfully managed to estabilsh a USB cable connection between the Fischertechnik ROBO TX Controller and the ROBO Pro Software running under Wine.

Note: Although I have used openSUSE 13.1 for the following, I think it can work with other Linux distros as well, when using the correct Wine packages.

This worked out-of-the-box after

  1. adding the user starting the ROBO Pro software via Wine to the system’s dialout group and
  2. adding the device for the ROBO TX to the so called DOS devices of the Wine emulator.

For Wine I have installed the following packages:

  • wine (at the time of writing, version 1.7.2-2.1)
  • wine-32bit
  • wine-gecko
  • wine-mp3 (at the time of wirting version 1.1.39-12.55)

As a GUI for configuration tasks I have found q4wine handy. So I have installed that package, too.

Connecting the the TX controller to my PC shows the following messages in the system’s log:

[ 4530.329465] usb 2-2: new full-speed USB device number 16 using xhci_hcd
[ 4535.340053] usb 2-2: New USB device found, idVendor=221d, idProduct=1000
[ 4535.340062] usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 4535.340067] usb 2-2: Product: ROBO TX Controller
[ 4535.340071] usb 2-2: Manufacturer: fischertechnik
[ 4535.340075] usb 2-2: SerialNumber: 0123456789AF
[ 4535.340844] cdc_acm 2-2:1.0: This device cannot do calls on its own. It is not a modem.
[ 4535.340888] cdc_acm 2-2:1.0: ttyACM0: USB ACM device

So the OS recognizes the TX controller is an ACM and not a USB device and links it to /dev/ttyACM0 on my machine. For the difference between ACM and USB devices see the articel at rfc1149.net.

That device is linked under $HOME/.wine/dosdevices/ as com3 – without a period at the end of the file name.

The com-port, com3 on my system, must be added to the registry. You can follow the instructions shown in the previous article concerning ROBO Pro, ROBO TX and Linux. Be carefull to use the correct names for the entries and edit them to match to your environment.

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.