I've (successfully I think) ported a USB driver for the WH1080 weather station to Mac OS X by compiling the driver http://meteolinger.lowlevel.cz/anonsvn/driver/wwsr.c using the command
after installing macports of libusb and libusb-compat.
The device presents itself as a HID device and as such it is claimed by the Mac HID kernel driver when the usb cable is attached. According to http://osdir.com/ml/lib.libusb.devel.general/2007-01/msg00058.html it is possible to install a null kernel driver that prevents the HID driver to grab the device. Have followed the instructions in that post but it seems that the HID driver still grabs the device. Output from wwsr (debug enabled):
The Info.plist:
Somebody know if this Info.plist suffices and how to trouble shoot the HID grabbing? How to check that this null kernel extension is loaded?
Code:
gcc -I/opt/local/include -L/opt/local/lib -lusb -Wall -o wwsr wwsr.c
The device presents itself as a HID device and as such it is claimed by the Mac HID kernel driver when the usb cable is attached. According to http://osdir.com/ml/lib.libusb.devel.general/2007-01/msg00058.html it is possible to install a null kernel driver that prevents the HID driver to grab the device. Have followed the instructions in that post but it seems that the HID driver still grabs the device. Output from wwsr (debug enabled):
Code:
$ ./wwsr -y
Reading last updated record from device
libusb:info [process_new_device] allocating new device for location 0x04000000
libusb:info [process_new_device] found device with address 1 at 001-05ac-8005-09-00
libusb:info [process_new_device] allocating new device for location 0x04500000
libusb:info [process_new_device] found device with address 2 at 002-05ac-8242-00-00
libusb:info [process_new_device] allocating new device for location 0x24000000
libusb:info [process_new_device] found device with address 1 at 001-05ac-8006-09-00
libusb:info [process_new_device] allocating new device for location 0x24400000
libusb:info [process_new_device] found device with address 2 at 002-05ac-8502-ef-02
libusb:info [process_new_device] allocating new device for location 0x06000000
libusb:info [process_new_device] found device with address 1 at 001-05ac-8005-09-00
libusb:info [process_new_device] allocating new device for location 0x06100000
libusb:info [process_new_device] found device with address 2 at 002-0a5c-4500-09-00
libusb:info [process_new_device] allocating new device for location 0x06110000
libusb:info [process_new_device] found device with address 5 at 005-05ac-8215-ff-01
libusb:info [process_new_device] allocating new device for location 0x06200000
libusb:info [process_new_device] found device with address 3 at 003-1941-8021-00-00
libusb:info [process_new_device] allocating new device for location 0x26000000
libusb:info [process_new_device] found device with address 1 at 001-05ac-8006-09-00
libusb:info [process_new_device] allocating new device for location 0x26500000
libusb:info [process_new_device] found device with address 2 at 002-05ac-8403-00-00
libusb:info [process_new_device] allocating new device for location 0x04000000
libusb:info [process_new_device] found device with address 1 at 001-05ac-8005-09-00
libusb:info [process_new_device] allocating new device for location 0x04500000
libusb:info [process_new_device] found device with address 2 at 002-05ac-8242-00-00
libusb:info [process_new_device] allocating new device for location 0x24000000
libusb:info [process_new_device] found device with address 1 at 001-05ac-8006-09-00
libusb:info [process_new_device] allocating new device for location 0x24400000
libusb:info [process_new_device] found device with address 2 at 002-05ac-8502-ef-02
libusb:info [process_new_device] allocating new device for location 0x06000000
libusb:info [process_new_device] found device with address 1 at 001-05ac-8005-09-00
libusb:info [process_new_device] allocating new device for location 0x06100000
libusb:info [process_new_device] found device with address 2 at 002-0a5c-4500-09-00
libusb:info [process_new_device] allocating new device for location 0x06110000
libusb:info [process_new_device] found device with address 5 at 005-05ac-8215-ff-01
libusb:info [process_new_device] allocating new device for location 0x06200000
libusb:info [process_new_device] found device with address 3 at 003-1941-8021-00-00
libusb:info [process_new_device] allocating new device for location 0x26000000
libusb:info [process_new_device] found device with address 1 at 001-05ac-8006-09-00
libusb:info [process_new_device] allocating new device for location 0x26500000
libusb:warning [process_new_device] could not retrieve device descriptor: device not responding. skipping device
libusb:info [darwin_open] device open for access
libusb:error [darwin_claim_interface] USBInterfaceOpen: another process has device opened for exclusive access
Could not open usb device, errorcode - -13
The Info.plist:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd";>
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key> <string>English</string>
<key>CFBundleGetInfoString</key> <string>Libusb USB device
Shield</string>
<key>CFBundleIdentifier</key> <string>com.libusb.USB_Shield</string>
<key>CFBundleInfoDictionaryVersion</key> <string>6.0</string>
<key>CFBundleName</key> <string>Libusb USB device Shield</string>
<key>CFBundlePackageType</key> <string>KEXT</string>
<key>CFBundleSignature</key> <string>????</string>
<key>CFBundleVersion</key> <string>6.0</string>
<key>IOKitPersonalities</key>
<dict>
<key>wwsr</key>
<dict>
<key>CFBundleIdentifier</key>
<string>com.apple.driver.AppleUSBComposite</string>
<key>IOClass</key> <string>AppleUSBComposite</string>
<key>IOProviderClass</key> <string>IOUSBDevice</string>
<key>idVendor</key> <integer>6465</integer>
<key>idProduct</key> <integer>32801</integer>
</dict>
</dict>
<key>OSBundleCompatibleVersion</key> <string>1.8</string>
<key>OSBundleLibraries</key>
<dict>
<key>com.apple.kernel.iokit</key> <string>6.0</string>
</dict>
</dict>
</plist>
Somebody know if this Info.plist suffices and how to trouble shoot the HID grabbing? How to check that this null kernel extension is loaded?