USB Todo's

From NikiWiki
Jump to: navigation, search

USB on OS/2 and eCS

There are several efforts working on USB related issues for OS/2. Most of the work is based on IBM's USB stack which is unfortunately not always the best known solution because it is based on official standards. For sure Microsoft did it different so many devices are not recognized correctly on OS/2 or eCS. IBM itself seems not to be interested in following the Microsoft way, which makes the USB stack useless for quite some devices.

Several people started to release their own version of the drivers, always based on the original work of IBM. This page tries to gather the different efforts, the goal is to have some kind of USB release which should become the most compatible one with current devices.


All discussions take place on the mailinglist, you can read the archive online as well:

There are many other ways to read and post in this mailinglist, please check the Mailinglists page for more information.


USB driver

At the moment there are several different USB drivers available, each one supports some features more or less:

  • CW-USBMSD, the driver from Chris Wohlgemuth. Supports more devices than the IBM one, especially Archos Jukebox and other external hard disks.
  • USBD.SYS included in MMPORT by Martin Kiewitz. This driver implements the enumeration of devices like Windows does so it should be more compatible with devices than the original one by IBM.
  • USBMSD13b by Yuri Dario. Supports Olympus digital cameras.
  • USB 1.1 Expanded Control Driver for OS/2 by Wim Brul.
  • PCMCIA driver for USB2.0 cards for laptops. Right now, laptops with USB1.0 built in cannot be upgraded to USB2.0 with PCMCIA cards.
  • USB driver for enabling RSJ to talk to external CDRW drives.

Note: It is better to make some changes in OS2CDROM.DMD code, so that it will allow to issue SCSI commands without need to open device. I made some checks, and found that it is possible to get CDROM Id control, open/close tray via OS2CDROM SCSI interface, but drive must have loaded media for the first to obtain device handle.

PM/WPS integration

Jason Stefanovich posted some pretty good ideas in a posting to the usb-dev Mailinglist. The archive of the message is not online at the moment, will be fixed soon. One should write a summary about his ideas here. You are welcome to contribute :)

Christian Langanke (see about widget below) and Markus Montkowski had some good ideas as well. Please summarize here guys.

There's a daemon package called USBMOUNT on Hobbes for automatically mounting USB disks. It uses USBRES to monitor for new devices and runs lvm.exe /rediscoverprm after attaching of a USB device. Source code is included. This package may be easily extended to support cameras and other stuff. With a REXX interface user written REXX procedures may be executed on every mount.

  • status reports should pop up in xCenter a bit like what we have on Windows

WPS integration via USB connection widget

Suggestion is to implement a widget showing the USB connection status (any or no USB device connected) and offering disconnection from all attached devices withn the context menu. This piece of software should very tight be linked with, or should possibly better control an automount daemon, providing a GUI where actions to take (like running specific scripts) can be configured (like (dis)connection scripts in the Wireless LAN Monitor Widget). Moreover, a file replicator service for USB Mass Storage Devices should be included with it, allowing to define half-automated folder replicas between folders on harddisks and the MSD device.

A skeleton copy of the source tree of Wireless LAN Monitor could easily be used to provide a quick startup on that project, it would automatically give the benefit of source modularity, as XWLAN in terms of source is divided into a driver access and TCP/IP library, a common GUI runtime library and widget and standalone frame only executable modules. If somebody would like to start on that, please contact the author of Wireless LAN Monitor.


Martin Kiewitz implemented some REXX wrappers in his MMPORT package. This could be used as a base for other REXX wrappers.

AFAIK there are other wrappers as well but I don't know details. Please extend if you know more.

Java interfaces on OS/2 and eCS

Christoph Bratschi had some nice ideas for a Java-USB interface on OS/2 based on the proposal by IBM. Please add more information and links here Christoph.

IBM's "proposal" is JSR-080, inhabiting the javax.usb namespace. Final approval ballot for this proposed specification ends on December 20th, 2004, at which time the proposal is expected to become a finalized standard.

(Note: JSR-080 passed on Dec 20th, 2004, and thus has been ratified as an official Java standard).

This library is also in use by the JSyncManager. So long as the implementation is sufficiently complete to detect the addition and removal of USB devices, the configuration of devices, the aquisition of the interface endpoints, and the tools to do bulk transport communications, it will permit USB-dock based PalmOS handhelds to sync on OS/2.

The jSyncManager's CVS tree contains a prototype transport plug-in for USB acccess on OS/2 (see the contrib/os2-usb directory). This is built upon Markus Montkowski's Ring 3 library, however it is in need of very serious debugging. As of the last testing, the code was able to (at times) receive data from the handheld device, but would cause a trap 0006 shortly after connecting. Debugging this code could bring us the ability to sync USB handhelds on OS/2 rapidly while javax.usb is ported.

The same could be done for SyncML, there are some good libraries available at - see SyncML and Push Mail

USB Resource Manager

Written by Markus Montkowski it needs some refresh. Add your requests/ideas here. As it is/was written using sybil the sources are not in the netlabs CVS. The current Ideas for a replacement are:

  • Enhance the USB res driver to report usbhubs.
  • Check hub ports if unused/or if a hub is attached to it to detect hub de/attachmement
  • General Hotplug demon with DLLs for the supported busses (USB/IR/Bluetooth/PCMCIA/Firewire)
    • The demon loads the bus DLLs and starts notification threads for each bus.
    • When a new device is attached the DLL returns a uniqe name for the device f.i. in the form of BUS:NR:V-VENDORID:D-DEVICEID:SERIAL.
    • The demon looks up if a WPS object with the Name exists and if notifies it.
    • If not it creates an object for it in the folder of it's bus.
  • General Hotplug-Bus WPS Class
    • Each Hostdriver gets represented as an WPS Object as it implements.
    • With optional statistics pages.
  • General Hotplug WPS Device Class
    • Gives info about the device in properties : BUS, BUS ID etc.
    • Allows addion of Programobject for Plug/Unplug events.
    • Shows BUS spec. Property pages implemented by the BUS-DLLs.

GENMAC and USB devices

Willibald Meyer wrote a generic wrapper to use NDIS drivers of Windows 2000 or higher on OS/2. It would be possible to extend this driver for USB NIC drivers as well.

Please list the required enhancements here.

Requirements for GENMAC driver interface to Wireless LAN Monitor

  • query signal and status from driver
  • set/query connection settings (SSID, type of network, etc)
  • set (/query ?) encrpytion settings (WEP/WPA)
  • query TCP/IP interface bound to a driver instance

See src\lib\drvapi\drvacces.* of xwlan CVS source tree for current interface provided by the genprism and other similar WLAN drivers.

Installation tool

A working installation program (may just be CLI) for the USB drivers is needed, which automatically queries the controllers in the system and adds the right drivers acordingly. Often people not even get the base USB stuff to run for yet unknown reasons.