This chapter explains the communication between the Macintosh and the Interface in depth. Understanding this communication process will be of help with eliminating any malfunctions. Fundamentally speaking, the driver consists of two parts. The first part is made for loading the firmware into the Interface. The second part is a framework (API) to control all functions of the interface.


The boot process (firmware loading)

When connecting the interface to the Mac, the firmware in the interface ROM gets activated. This firmware is rather simple and can not be used for more than to apply for a USB device, connected to the Mac. All the interface I/O functions are enclosed in a more powerful firmware, which will be automatically loaded into the interface by the driver.
Without driver ,i.e. without the more powerful firmware, the interface is identified at USB as a vendor specific device from „BBnig und Kallenbach".

After the operating system has noticed the interface, a background process (daemon) gets activated. The background process loads the more powerful firmware into the interface and turns off the formerly active firmware. The new firmware is located in the interface RAM. If the interface is not power-supplied, the RAM located firmware is lost, the interface switches back to the simple firmware in ROM and the load process can start again.

The green LED "USB" makes sure, that the firmware is loaded correctly. You can watch this loading process easily: Connect the interface to the USB and the firmware will be loaded into the interface. This process takes less than one second and the green LED will be on.


The green LED did not glow

Different occasions may produce this malfunction. First you must unplug the interface. Disconnect the USB, the line cord and all other wires and cables. It is extremely important to disconnect all attachments to be sure that the interface is without any power. Don't forget to unplug the RS232. The smallest amount of power can prevent the interface from switching to the ROM-based firmware. Wait at least two seconds after removing all connections and connect the interface to USB. Open the system profiler (Apple Menu > About This Mac -> More Info...)


Test program for the RS232 interface

The interface shall be registered to the operating system with productID 0x0004,0x0006,0x000A or 0x000B, depending on the model. The Vendor-ID 0x0743 is the same for all models. If you don't see the interface here, either the USB-cable, USB-Port or the interface is damaged. A damaged interface is a rare event and you should double check the USB- connection, restart the system profiler, update the screen (cmd-R) or test it on another Mac. If you can see the interface in the system profiler, the firmware did not load. This mainly occurs, when the background process (Firmware-LoaderDaemon) is not working. The most simple solution is to run the installer package again. But you can also check manually for the firmware loader.

If the Service USB registers with vendor-ID 0x0547 or 0x04B4, the ROM is damaged and you need to send it back to Bönig und Kallenbach oHG for repair.

Use the OSX-Terminal program
/Applications/Utilities/ and type:
ps -axwww | grep Daemon
The Daemon is loaded, if the answer is similar to this:
100 ?? 0:00.01 /Library/Frameworks/Service USB Driver.framework/Versions/A/Support/Firmware Loader Daemon

Instead of using the Terminal program, you can use the activity control, which can also be found in the utilities folder.

Activity Monitor

The process „Firmware Loader" must be active

Be sure to view "all processes". If you sort the processes by name, "Firmware loader" can be found quickly.

If the firmware loader is running and the interface registers to the operating system, using Product-ID 0x0004,0x0006,0x00A,0x000B and Vendor-ID 0x0743, the firmware will load. The fully functional interface with illuminated LED is registering as seen in this picture.
System Profile

Product ID 0x0005 indicates that the firmware is loaded


The green LED glows

In this case, the interface can be controlled via the underlying framework. Every control structure, like the different plug-ins, Xtras and OSAX is based on this framework. First you should start the program „SERVICE Test RB X" out of the folder „Testprograms". This program works constantly, provided that the connection to the interface is stable. You can check the deviceID in an extra window, which should look similar to this.



The Interface is registered correctly at „ SERVICE Test RB X"

If the serial number or the deviceID looks suspiciously wrong, the version of Driver and Firmware-ROM are not corresponding. This problem can only occur on Service USB, bought before September 1st, 2003.


Wrong driver version

If this happens, you must update the ROM of the Service USB.

If the interface is working fine with "SERVICE USB Test RB X", the malfunction can be found in the program environment or in your program. You must check whether the Plug-In, Xtra OSAX or Framework for your preferred programming environment is in place.


Error numbers

Error numbers in the range from 13000 to 13009 are coming from the interface. Other error numbers are not coming from the Service USB driver or framework. They are from your programming environment.

13000 errServiceUSB_OutOfParamBlocks
No USB control blocks available. There are too many request executing.

13001 errServiceUSB_Timeout
A call did not finish for some reasons: Timeout was reached.

13002 errServiceUSB_BadSync
A call was issued from the wrong interrupt level.

13003 errServiceUSB_USBDriverNotFound
Couldn't find the USB SERVICE driver. Probably it is not loaded.

13004 errServiceUSB_WrongPipeIndex
A wrong index for the read/write pipe was specified (valid values are 0, 1 and 2 )

13005 errServiceUSB_MaxDevicesReached
The maximum of USB SERVICE devices that can be connected has been reached.

13006 errServiceUSB_DeviceNotFound
The device couldnot be found in the device table

13007 errServiceUSB_CFNil
A call to CoreFoundation returned nil

13008 errServiceUSB_NoConfigurationsError
No configuration where found

13009 errServiceUSB_API_NotSupported
The API call is not supported

In practice you will only see 13001 and 13003.
13001 is mainly seen, if you send characters via RS232 and the remote station can not receive
13003 is always shown, if the driver is not installed. You should run the installer package.


Service USB return value is mostly 88

In this case the driver is not installed. Most Xtras, Externals and Plugins switch back to Demo-Mode if the underlying Framework is not found. In this case the Interface returns 0 or 88 for demonstation purposes. This allows users to test the Software without installation, without the interface and without administrator password.

After installing the „SERVICE USB.pkg", all plug-ins work as expected and if no interface is connected, they return the corresponding error code.


Manufacturer's declaration of conformity

The manufacturer, Bönig und Kallenbach oHG, Lindemannstrasse 25, 44137 Dortmund, Germany, has sole liability for the Service USB classic coupler component and declares that this component conforms to 2004/ 108/EG standards, provided the component is operated without an external adapter or with the adapter Service USB Power (9V= /12W).

The manufacturer, Bönig und Kallenbach oHG, Lindemannstrasse 25, 44137 Dortmund, Germany, has sole liability for the Service USB plus, Service USB RS232 and Service USB drawer component and declares that this component conforms to 2004/108/EG.

Dortmund, den 28. February 2009