Tuesday, 28 November 2006

Want to use a Sony GPS-CS1 on your Mac?

Technorati Profile

I recently bought a Sony GPS-CS1 - and if you're reading this, I guess you have too (or are thinking about it). It's a clever little piece of kit, that records a GPS location every 15 seconds, that you can use to geotag any photos you've taken. I like to travel, and I like to take my camera with me, so it's ideal.

Except that I'm also a Mac owner, and the GPS-CS1 doesn't work on a Mac. OK, the supplied Sony software is advertised as Windows-only, but the unit doesn't even mount on a Mac. On a PC it mounts as a removable drive (there's a memory stick inside, apparently) and you can copy the files from it. If you have access to a PC and a Mac, you can copy the files to your Mac, and then you can use various Mac software to process the files, tag your photos, import them into iPhoto, and export to Google Earth. I'll give you some links for all that later.

It would be nice though not to have to rely on my work PC for this. I'd like to be able to connect the GPS-CS1 directly to the Mac. From the number of hits I got when I mentioned this on my personal blog, I think lots of other Mac users would too. Not every Mac owner has easy access to a PC. Not every Mac owner who's interested in a GPS-CS1 has bought one yet.

So this is an attempt to see how much demand is really out there, and present it to Sony. Or even to inspire someone else to write their own Mac driver, if we can get together enough info on the GPS-CS1 to help them.

If you want to see Mac support for the Sony GPS-CS1, please leave a comment here. And especially if you are a potential GPS-CS1 buyer waiting for Mac support, let us know.

So here are the useful links I promised:

Once you manage to get the GPS-CS1 files on your Mac, you can convert them to GPX files to make them more useful. Use gpsbabel for this, and look at this article to see how to do this.

Recommended for geotagging your photos with your newly created GPX files - GPSPhotoLinker.

To export your geotagged photos from iPhoto to Google Earth - use iPhotoToGoogleEarth.

Again, anyone who's discovered or written some useful Mac geotagging software, feel free to plug it here.

Finally, if you've managed to get any useful technical info for Mac programmers who might be working on a driver, post it here too. To start you off, here's the info that appears in System Profiler when the GPS-CS1 is plugged into the Mac.

Thanks

Sony DI Accessory:

Version: 1.00
Bus Power (mA): 500
Speed: Up to 12 Mb/sec
Manufacturer: Sony Corporation
Product ID: 0×0298
Vendor ID: 0×054c

30 comments:

noren said...

I would also really, really, really like support for the Sony GPS-CS1 on my PowerBook. Please!

Stephen said...

Thanks for your support noren.

By the way - some hope for Mac owners, from Sony New Zealand.

They have a very useful FAQ, including:

27. Is the Sony Picture Utility Update Program compatible with Macs?
No, the supplied software is not Mac-compatible at this stage.


My highlighting. Doesn't necessarily mean it's a work in progress of course, but perhaps it is under active consideration - in which case showing some demand for it will surely help?

Craig said...

Craig here, author of iPhotoToGoogleEarth and Geotagger. I would really like the sony device to be mac compatible, but in the mean time I am using a kit I got from Spark Fun Electronics. It takes a SD card so it can store much more data.

rakerman said...

This blog is a great idea. I was really surprised when I plugged my GPS-CS1 into my PowerBook and... nothing happened.

Ken said...

I too would love mac support for the sony GPS-CS1. I really like the device.

FYI with windows under parallels it tries to connect and knows its a sony device, but still does not show up as a drive.

Esben said...

I'll join the line of frustrated mac users who wish for mac support for this device. I don't own a GPS-CS1 but I was seriously considering it until I saw it wasn't mac compatible.

If Sony could just supply drivers so OS X would recognize this device it would be great - then I would hope some mac software genius could put together a simple app that geotagged images. I'm not a fan of Sony's proprietary software... Too complicated.

Stephen said...

Thanks everyone so far for your support.

Ken, what version of Windows are you using? Using XP on my PC laptop, the GPS-CS1 is detected as a drive without having to install any of the Sony software. I've heard others can get this to work on Intel Macs running Windows XP under Parallels, can you confirm this isn't the case for you? I know at least one person who wants to know this before buying a GPS-CS1.

Kevin said...

I would also like GPS-CS1 to work with my intel macbook.

I've tried the device under Windows XP without any special software installed(without software provided by GPS-CS1) that Windows recognizes it as a generic removable drive.

I think OSX almost recogonizes the device though(as a Mass Storage device). Here's the output from USB Prober(included with OSX)

Full Speed device @ 3 (0x3D100000): ............................................. Composite device: "Sony DI Accessory"
Device Descriptor
Descriptor Version Number: 0x0200
Device Class: 0 (Composite)
Device Subclass: 0
Device Protocol: 0
Device MaxPacketSize: 8
Device VendorID/ProductID: 0x054C/0x0298 (Sony Corporation)
Device Version Number: 0x0100
Number of Configurations: 1
Manufacturer String: 1 "Sony Corporation"
Product String: 2 "Sony DI Accessory"
Serial Number String: 0 (none)
Configuration Descriptor
Length (and contents): 32
Raw Descriptor (hex) 0000: 09 02 20 00 01 01 00 C0 32 09 04 00 00 02 08 06
Raw Descriptor (hex) 0010: 50 00 07 05 01 02 40 00 00 07 05 81 02 40 00 00
Unknown Descriptor 0020:
Number of Interfaces: 1
Configuration Value: 1
Attributes: 0xC0 (self-powered)
MaxPower: 100 ma
Interface #0 - Mass Storage/SCSI
Alternate Setting 0
Number of Endpoints 2
Interface Class: 8 (Mass Storage)
Interface Subclass; 6 (SCSI)
Interface Protocol: 80
Endpoint 0x01 - Bulk Output
Address: 0x01 (OUT)
Attributes: 0x02 (Bulk no synchronization data endpoint)
Max Packet Size: 64
Polling Interval: 0 ms
Endpoint 0x81 - Bulk Input
Address: 0x81 (IN)
Attributes: 0x02 (Bulk no synchronization data endpoint)
Max Packet Size: 64
Polling Interval: 0 ms

here are some logging outputs from USB Logger when I plug it into my macbook

20.022 [6] IOUSBInterface[0x4566a00]::open calling super::open with gate
20.022 [6] +IOUSBInterface[0x4566a00]::handleOpen (device Sony DI Accessory)
20.022 [6] Sony DI Accessory[0x403c700]:FindConfig (1)
20.022 [6] IOUSBPipe[0x380cf40]::ToEndpoint, new 2 method called for device 0x403c700
20.022 [5] AppleUSBUHCI[0x3810000]::DoCreateEP, high speed ancestor hub:1, port:1
20.022 [5] AppleUSBUHCI[0x3810000]::UIMCreateBulkEndpoint (fn 2 ep 1 dir 0) speed 1 mp 64
20.022 [6] Sony DI Accessory[0x403c700]:FindConfig (1)
20.022 [6] IOUSBPipe[0x3823c40]::ToEndpoint, new 2 method called for device 0x403c700
20.022 [5] AppleUSBUHCI[0x3810000]::DoCreateEP, high speed ancestor hub:1, port:1
20.022 [5] AppleUSBUHCI[0x3810000]::UIMCreateBulkEndpoint (fn 2 ep 1 dir 1) speed 1 mp 64
20.022 [6] Sony DI Accessory[0x403c700]:FindConfig (1)
20.022 [6] AppleUSBUHCI[0x3810000]::UIMCreateControlTransfer - allocating TD chain with CBP 0x3840900
20.022 [6] AppleUSBUHCI[0x3810000]::UIMCreateControlTransfer - allocating TD chain with CBP 0x4267a00
20.022 [6] AppleUSBUHCI[0x3810000]::UIMCreateControlTransfer - allocating TD chain with CBP 0
20.024 [6] AppleUSBUHCI[0x3810000]::HandleInterrupt - Host controller error interrupt
20.024 [6] scavengeQueueHeads - found stalled TD 0x386cf40
20.024 [4] AppleUSBUHCI[0x3810000]::UHCIUIMDoDoneQueueProcessing - got errStatus 0xe00002e8 on TD 0x386cf40
20.024 [4] IOUSBControllerListElement[0x386cf40]::print - _sharedPhysical[0x1ffb4c70]
20.024 [4] IOUSBControllerListElement::print - _sharedLogical[0x3afa3c70]
20.024 [4] IOUSBControllerListElement::print - _logicalNext[0]
20.024 [4] AppleUHCITransferDescriptor::print HW: link 0x1ffb4c60
20.024 [4] AppleUHCITransferDescriptor::print ctrlStatus 0x19500000 ActLen 1 Status 50 Err 3 IOC
20.024 [4] STATUS DECODE: STALL BABBLE
20.024 [4] AppleUHCITransferDescriptor::print token 0x80269 (IN) DevAddr 2 EndPt 0 MaxLen 1 D
20.024 [4] AppleUHCITransferDescriptor::print shared.buffer 1cc1169e
20.024 [4] AppleUHCITransferDescriptor::print - alignment buffer[0]
20.024 [4] AppleUHCITransferDescriptor::print - command[0x39afa00]
20.024 [4] AppleUHCITransferDescriptor::print - memory descriptor[0x4267a00]
20.024 [4] AppleUHCITransferDescriptor::print - lastTDofTransaction[true]
20.024 [4] AppleUHCITransferDescriptor::print -----------------------------------

is anyone out there an expert for OSX?

Stephen said...

Kevin - thanks for that. Interesting. I've tried USB Prober myself, so here are a few more details to add to your comment.

From the Bus Probe tab:

Full Speed device @ 2 (0x2B100000): ............................................. Sony DI Accessory (did not respond to inquiry - 0xe0004051, might be Suspended)

From the IORegistry tab:

usb@B,1 <class IOPCIDevice>
AppleUSBOHCI <class AppleUSBOHCI>
OHCI Root Hub Simulation@B,1 <class IOUSBRootHubDevice>
AppleUSBHub <class AppleUSBHub>
IOUSBInterface@0 <class IOUSBInterface>
IOUSBUserClientInit <class IOUSBUserClientInit>
Sony DI Accessory@2b100000 <class IOUSBDevice>
IOUSBCompositeDriver <class IOUSBCompositeDriver>
IOUSBInterface@0 <class IOUSBInterface>
IOUSBMassStorageClass <class IOUSBMassStorageClass>
IOSCSIPeripheralDeviceNub <class IOSCSIPeripheralDeviceNub>
IOSCSIPeripheralDeviceType00 <class IOSCSIPeripheralDeviceType00>
IOBlockStorageServices <class IOBlockStorageServices>
IOBlockStorageDriver <class IOBlockStorageDriver>
GENERIC Card Memory R/W Media <class IOMedia>
AppleXsanFilter <class AppleXsanFilter>
IOUSBUserClientInit <class IOUSBUserClientInit>
IOUSBUserClientInit <class IOUSBUserClientInit>

I don't know enough about Mac OS X myself, but it looks like the Mac recognises the device as a Mass Storage device - i.e. an external drive - correctly. For some reason though it isn't getting whatever the expected response is back from the GPS-CS1.

This is looking more like a Mac OS bug, unless Sony aren't obeying the USB spec in some way?

Stephen said...

BTW, error 0xe0004051 seems to be a timeout.

define kIOUSBTransactionTimeout iokit_usb_err(81) // 0xe0004051 Transaction timed out

Kevin said...

I'ved posted the packets caputured in Windows which recognizes the device as removable drive (started from the moment it's got plugged in to reading a GPS position file from it) in Apple forum.

http://discussions.apple.com/thread.jspa?messageID=3676963&tstart=0

Stephen said...

Thanks again Kevin.

I've also posted to the Apple USB mailing list.

http://lists.apple.com/archives/Usb//2006/Dec/msg00017.html

oblaum said...

dear sony,
please let us poor mac comfort users not alone ;-)

i googled for hours for a solution, its amazing how bad gps is implemented in any application. i guess this will and should be easier....

gpsbabel seems nice, but i do not want to use the damn os terminal. give us a simple application.

or does anyone has a nice solution, yet?

Tim said...

Since the driver stack builds up to the IOMedia object, it's possible that the problem is in mounting the file system, but I would need to see its registry properties. Also the IORegistry dump is showing the AppleXsanFilter and it's possible it is hung up trying to access the device.

Kevin said...

Sorry tim, is this the info you need? I did a ioreg -l from command line. Please let me know if you need other info. thanks

o Sony DI Accessory@3d100000 <class IOUSBDevice, !registered, !matched, inactive, busy 2, retain count 6>
| {
| "PortNum" = 1
| "IOUserClientClass" = "IOUSBDeviceUserClient"
| "Device Speed" = 1
| "iSerialNumber" = 0
| "Bus Power Available" = 250
| "IOGeneralInterest" = "IOCommand is not serializable"
| "bDeviceClass" = 0
| "USB Product Name" = "Sony DI Accessory"
| "bNumConfigurations" = 1
| "iManufacturer" = 1
| "USB Vendor Name" = "Sony Corporation"
| "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
| "bcdDevice" = 256
| "bDeviceSubClass" = 0
| "iProduct" = 2
| "sessionID" = 448447384052
| "bMaxPacketSize0" = 8
| "locationID" = 1024458752
| "Need contiguous memory for isoch" = Yes
| "idProduct" = 664
| "USB Address" = 2
| "bDeviceProtocol" = 0
| "idVendor" = 1356
| }
|
+-o IOUSBInterface@0 <class IOUSBInterface, !registered, !matched, inactive, busy 2, retain count 7>
| {
| "IOUserClientClass" = "IOUSBInterfaceUserClient"
| "idProduct" = 664
| "IOCFPlugInTypes" = {"2d9786c6-9ef3-11d4-ad51-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
| "iInterface" = 0
| "bAlternateSetting" = 0
| "bConfigurationValue" = 1
| "bInterfaceProtocol" = 80
| "bInterfaceNumber" = 0
| "bInterfaceSubClass" = 6
| "idVendor" = 1356
| "bInterfaceClass" = 8
| "locationID" = 1024458752
| "bNumEndpoints" = 2
| "bcdDevice" = 256
| }
|
+-o IOUSBMassStorageClass <class IOUSBMassStorageClass, !registered, !matched, inactive, busy 2, retain count 13>
| {
| "Power Management protected data" = "{ theNumberOfPowerStates = 2, version 1, power state 0 = { capabilityFlags 00000000, outputPowerCharacter 00000000, inputPowerRequirement 00000000,$
| "idProduct" = 664
| "bConfigurationValue" = 1
| "USB Mass Storage Characteristics" = {"Preferred Protocol"=80,"Preferred Subclass"=6}
| "CFBundleIdentifier" = "com.apple.iokit.IOUSBMassStorageClass"
| "IOClass" = "IOUSBMassStorageClass"
| "Protocol Characteristics" = {"Physical Interconnect"="USB","Physical Interconnect Location"="External"}
| "IOProbeScore" = 90000
| "Power Management private data" = "{ this object = 045b5600, interested driver = 045b5600, driverDesire = 1, deviceDesire = 1, ourDesiredPowerState = 1, previousRequest = 2 }"
| "IOMatchCategory" = "IODefaultMatchCategory"
| "Physical Interconnect Location" = "External"
| "bInterfaceNumber" = 0
| "idVendor" = 1356
| "Physical Interconnect" = "USB"
| "IOProviderClass" = "IOUSBInterface"
| }
|
+-o IOSCSIPeripheralDeviceNub <class IOSCSIPeripheralDeviceNub, !registered, !matched, inactive, busy 2, retain count 9>
| {
| "Vendor Identification" = "GENERIC"
| "Product Identification" = "Card Memory R/W"
| "CFBundleIdentifier" = "com.apple.iokit.IOSCSIArchitectureModelFamily"
| "IOClass" = "IOSCSIPeripheralDeviceNub"
| "Protocol Characteristics" = {"Physical Interconnect"="USB","Physical Interconnect Location"="External"}
| "Peripheral Device Type" = 0
| "IOProbeScore" = 0
| "IOMatchCategory" = "SCSITaskUserClientIniter"
| "Product Revision Level" = "1.00"
| "IOProviderClass" = "IOSCSIProtocolServices"
| }
|
+-o IOSCSIPeripheralDeviceType00 <class IOSCSIPeripheralDeviceType00, !registered, !matched, inactive, busy 2, retain count 14>
| {
| "Power Management protected data" = "{ theNumberOfPowerStates = 5, version 1, power state 0 = { capabilityFlags 00000000, outputPowerCharacter 00000000, inputPowerRequirement 00000$
| "IOMaximumBlockCountWrite" = 65535
| "CFBundleIdentifier" = "com.apple.iokit.IOSCSIBlockCommandsDevice"
| "IOClass" = "IOSCSIPeripheralDeviceType00"
| "Peripheral Device Type" = 0
| "IOProbeScore" = 5000
| "Power Management private data" = "{ this object = 04526000, interested driver = 04526000, driverDesire = 1, deviceDesire = 0, ourDesiredPowerState = 1, previousRequest = 2 }"
| "IOMatchCategory" = "IODefaultMatchCategory"
| "IOMaximumBlockCountRead" = 65535
| "IOProviderClass" = "IOSCSIPeripheralDeviceNub"
| }
|
+-o IOBlockStorageServices <class IOBlockStorageServices, !registered, !matched, inactive, busy 2, retain count 7>
| {
| "Protocol Characteristics" = {"Physical Interconnect"="USB","Physical Interconnect Location"="External"}
| "IOMaximumSegmentCountWrite" = 32
| "IOMinimumSegmentAlignmentByteCount" = 4
| "Device Characteristics" = {"Product Revision Level"="1.00","Vendor Name"="GENERIC","Product Name"="Card Memory R/W"}
| "device-type" = "Generic"
| "IOMaximumSegmentCountRead" = 32
| }
|
+-o IOBlockStorageDriver <class IOBlockStorageDriver, !registered, !matched, inactive, busy 2, retain count 6>
| {
| "IOMatchCategory" = "IODefaultMatchCategory"
| "IOClass" = "IOBlockStorageDriver"
| "Statistics" = {"Errors (Read)"=0,"Total Time (Write)"=0,"Latency Time (Read)"=0,"Bytes (Read)"=0,"Latency Time (Write)"=0,"Retries (Read)"=0,"Bytes (Write)"=0,"Errors (Write)"$
| "IOProviderClass" = "IOBlockStorageDevice"
| "CFBundleIdentifier" = "com.apple.iokit.IOStorageFamily"
| "IOPropertyMatch" = {"device-type"="Generic"}
| "IOProbeScore" = 0
| }
|
+-o GENERIC Card Memory R/W Media <class IOMedia, !registered, !matched, inactive, busy 3, retain count 8>
| {
| "Leaf" = No
| "Writable" = No
| "Preferred Block Size" = 512
| "Size" = 33546752
| "Content Hint" = ""
| "Removable" = Yes
| "IOMediaIcon" = {"IOBundleResourceFile"="Removable.icns","CFBundleIdentifier"="com.apple.iokit.IOStorageFamily"}
| "Ejectable" = Yes
| "Content" = ""
| "Whole" = Yes
| }
|
+-o AppleXsanFilter <class AppleXsanFilter, !registered, !matched, inactive, busy 1, retain count 6>
{
"IOMatchCategory" = "IOStorage"
"IOClass" = "AppleXsanFilter"
"IOProviderClass" = "IOMedia"
"CFBundleIdentifier" = "com.apple.driver.XsanFilter"
"IOPropertyMatch" = {"Whole"=Yes}
"IOProbeScore" = 5000
}

o Sony DI Accessory@3d100000 <class IOUSBDevice, !registered, !matched, inactive, busy 2, retain count 6>
| {
| "PortNum" = 1
| "IOUserClientClass" = "IOUSBDeviceUserClient"
| "Device Speed" = 1
| "iSerialNumber" = 0
| "Bus Power Available" = 250
| "IOGeneralInterest" = "IOCommand is not serializable"
| "bDeviceClass" = 0
| "USB Product Name" = "Sony DI Accessory"
| "bNumConfigurations" = 1
| "iManufacturer" = 1
| "USB Vendor Name" = "Sony Corporation"
| "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
| "bcdDevice" = 256
| "bDeviceSubClass" = 0
| "iProduct" = 2
| "sessionID" = 17882252046204
| "bMaxPacketSize0" = 8
| "locationID" = 1024458752
| "Need contiguous memory for isoch" = Yes
| "idProduct" = 664
| "USB Address" = 3
| "bDeviceProtocol" = 0
| "idVendor" = 1356
| }
|
+-o IOUSBInterface@0 <class IOUSBInterface, !registered, !matched, inactive, busy 2, retain count 7>
| {
| "IOUserClientClass" = "IOUSBInterfaceUserClient"
| "idProduct" = 664
| "IOCFPlugInTypes" = {"2d9786c6-9ef3-11d4-ad51-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
| "iInterface" = 0
| "bAlternateSetting" = 0
| "bConfigurationValue" = 1
| "bInterfaceProtocol" = 80
| "bInterfaceNumber" = 0
| "bInterfaceSubClass" = 6
| "idVendor" = 1356
| "bInterfaceClass" = 8
| "locationID" = 1024458752
| "bNumEndpoints" = 2
| "bcdDevice" = 256
| }
|
+-o IOUSBMassStorageClass <class IOUSBMassStorageClass, !registered, !matched, inactive, busy 2, retain count 13>
| {
| "Power Management protected data" = "{ theNumberOfPowerStates = 2, version 1, power state 0 = { capabilityFlags 00000000, outputPowerCharacter 00000000, inputPowerRequirement 00000000,$
| "idProduct" = 664
| "bConfigurationValue" = 1
| "USB Mass Storage Characteristics" = {"Preferred Protocol"=80,"Preferred Subclass"=6}
| "CFBundleIdentifier" = "com.apple.iokit.IOUSBMassStorageClass"
| "IOClass" = "IOUSBMassStorageClass"
| "Protocol Characteristics" = {"Physical Interconnect"="USB","Physical Interconnect Location"="External"}
| "IOProbeScore" = 90000
| "Power Management private data" = "{ this object = 0464ce00, interested driver = 0464ce00, driverDesire = 1, deviceDesire = 1, ourDesiredPowerState = 1, previousRequest = 2 }"
| "IOMatchCategory" = "IODefaultMatchCategory"
| "Physical Interconnect Location" = "External"
| "bInterfaceNumber" = 0
| "idVendor" = 1356
| "Physical Interconnect" = "USB"
| "IOProviderClass" = "IOUSBInterface"
| }
|
+-o IOSCSIPeripheralDeviceNub <class IOSCSIPeripheralDeviceNub, !registered, !matched, inactive, busy 2, retain count 9>
| {
| "Vendor Identification" = "GENERIC"
| "Product Identification" = "Card Memory R/W"
| "CFBundleIdentifier" = "com.apple.iokit.IOSCSIArchitectureModelFamily"
| "IOClass" = "IOSCSIPeripheralDeviceNub"
| "Protocol Characteristics" = {"Physical Interconnect"="USB","Physical Interconnect Location"="External"}
| "Peripheral Device Type" = 0
| "IOProbeScore" = 0
| "IOMatchCategory" = "SCSITaskUserClientIniter"
| "Product Revision Level" = "1.00"
| "IOProviderClass" = "IOSCSIProtocolServices"
| }
|
+-o IOSCSIPeripheralDeviceType00 <class IOSCSIPeripheralDeviceType00, !registered, !matched, inactive, busy 2, retain count 14>
| {
| "Power Management protected data" = "{ theNumberOfPowerStates = 5, version 1, power state 0 = { capabilityFlags 00000000, outputPowerCharacter 00000000, inputPowerRequirement 00000$
| "IOMaximumBlockCountWrite" = 65535
| "CFBundleIdentifier" = "com.apple.iokit.IOSCSIBlockCommandsDevice"
| "IOClass" = "IOSCSIPeripheralDeviceType00"
| "Peripheral Device Type" = 0
| "IOProbeScore" = 5000
| "Power Management private data" = "{ this object = 049cbe00, interested driver = 049cbe00, driverDesire = 1, deviceDesire = 0, ourDesiredPowerState = 1, previousRequest = 2 }"
| "IOMatchCategory" = "IODefaultMatchCategory"
| "IOMaximumBlockCountRead" = 65535
| "IOProviderClass" = "IOSCSIPeripheralDeviceNub"
| }
|
+-o IOBlockStorageServices <class IOBlockStorageServices, !registered, !matched, inactive, busy 2, retain count 7>
| {
| "Protocol Characteristics" = {"Physical Interconnect"="USB","Physical Interconnect Location"="External"}
| "IOMaximumSegmentCountWrite" = 32
| "IOMinimumSegmentAlignmentByteCount" = 4
| "Device Characteristics" = {"Product Revision Level"="1.00","Vendor Name"="GENERIC","Product Name"="Card Memory R/W"}
| "device-type" = "Generic"
| "IOMaximumSegmentCountRead" = 32
| }
|
+-o IOBlockStorageDriver <class IOBlockStorageDriver, !registered, !matched, inactive, busy 2, retain count 6>
| {
| "IOMatchCategory" = "IODefaultMatchCategory"
| "IOClass" = "IOBlockStorageDriver"
| "Statistics" = {"Errors (Read)"=0,"Total Time (Write)"=0,"Latency Time (Read)"=0,"Bytes (Read)"=0,"Latency Time (Write)"=0,"Retries (Read)"=0,"Bytes (Write)"=0,"Errors (Write)"$
| "IOProviderClass" = "IOBlockStorageDevice"
| "CFBundleIdentifier" = "com.apple.iokit.IOStorageFamily"
| "IOPropertyMatch" = {"device-type"="Generic"}
| "IOProbeScore" = 0
| }
|
+-o GENERIC Card Memory R/W Media <class IOMedia, !registered, !matched, inactive, busy 3, retain count 8>
| {
| "Leaf" = No
| "Writable" = No
| "Preferred Block Size" = 512
| "Size" = 33546752
| "Content Hint" = ""
| "Removable" = Yes
| "IOMediaIcon" = {"IOBundleResourceFile"="Removable.icns","CFBundleIdentifier"="com.apple.iokit.IOStorageFamily"}
| "Ejectable" = Yes
| "Content" = ""
| "Whole" = Yes
| }
|
+-o AppleXsanFilter <class AppleXsanFilter, !registered, !matched, inactive, busy 1, retain count 6>
{
"IOMatchCategory" = "IOStorage"
"IOClass" = "AppleXsanFilter"
"IOProviderClass" = "IOMedia"
"CFBundleIdentifier" = "com.apple.driver.XsanFilter"
"IOPropertyMatch" = {"Whole"=Yes}
"IOProbeScore" = 5000
}

o Sony DI Accessory@3d100000 <class IOUSBDevice, registered, matched, active, busy 1, retain count 9>
| {
| "PortNum" = 1
| "IOUserClientClass" = "IOUSBDeviceUserClient"
| "Device Speed" = 1
| "iSerialNumber" = 0
| "Bus Power Available" = 250
| "IOGeneralInterest" = "IOCommand is not serializable"
| "bDeviceClass" = 0
| "USB Product Name" = "Sony DI Accessory"
| "bNumConfigurations" = 1
| "iManufacturer" = 1
| "USB Vendor Name" = "Sony Corporation"
| "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
| "bcdDevice" = 256
| "bDeviceSubClass" = 0
| "iProduct" = 2
| "sessionID" = 62863607295434
| "bMaxPacketSize0" = 8
| "locationID" = 1024458752
| "Need contiguous memory for isoch" = Yes
| "idProduct" = 664
| "USB Address" = 4
| "bDeviceProtocol" = 0
| "idVendor" = 1356
| }

Holger said...

Hi guys!

I got the CS1 too and it didn't work on my mac. So i search around a bit and got the how to develop a USB Mass Storage device driver from Apple and played with it. Actually no success yet but what I think is and what somebody above was seeing:

AppleXSanDriver should actually not be loaded. If you stick in a standard USB Stick it doesn't load this layer. It has something to do with the driver matching. Actually the USB memory stick chipset is a bit weired and the apple driver doesn't match it. I tried to develop a new driver, which is mostly building plist files influencing the matching... :(

Sadly I don't have that much time currently to find the solution quickly. Somebody more experienced with this should be able to solve this quickly...

Kevin said...

according to this, http://lists.apple.com/archives/Usb//2006/Dec/msg00021.html, that someone will be looking at it eventually.. anyone has a better idea?

Stephen said...

Thanks everyone for all the technical info so far.

Some more info from that article (linked from Kevin's last comment) on what the possible error could be:

"That's showing there was a babble error on a transaction, that is the device sent more data than the Mac was expecting. I'd guess that's when the Mac asks for the header of the configuration descriptor. (4 bytes are requested, 8 bytes are returned.) That's quite a common device failure. If the logging were at level 7 (it seems to be level 6) it might say something."

PS Anyone else out there who wants to see Mac support for the GPS-CS1, please post a comment here anyway even if you don't have any technical info to add - it could still be useful for us just to show the demand out there.

Stephen said...

Latest from the Apple USB mailing list (before you read on though, be aware this suggestion didn't fix the problem).


From the ioreg output it looks like it's got all the config descriptors and strings correctly, the IOUSBDevice has been created, AppleUSBComposite has got in there and set the first configuration, and IOUSBMassStorageClass has matched to the resultant IOUSBInterface.

The interface descriptor reckons it's got an interface class of 8 (mass storage), subclass of 6 (SCSI commands) and a protocol of 0x50 (bulk transport). With bulk out and in pipes too. Which all sounds fine to me.

Then it's gone and got itself a chain of IOSCSIPeripheralDeviceNub ->
IOSCSIPeripheralDeviceType00 -> IOBlockStorageServices ->
IOBlockStorageDriver -> IOMedia -> AppleXsanFilter.


The AppleXsanFilter seems a bit odd... it's matched on the IOStorage category. The personality dict looks pretty broad but I can't find it on any of my IOMedia on my Mac. I also couldn't find the source with a quick look to see if it has a more complicated probe method.

Although maybe there's something really simple I'm missing here about what that transaction error means and when it's happening... ? Is it happening when the device is plugged in but later worked around (maybe with a retry) or is it happening when something like an alternate setting is set on the device or what?

Anyway as a test I would try moving away /System/Library/Extensions/AppleXsanFilter.kext and rebooting and see if that changes anything. (Use the Finder to move it away so the parent fodler is touched.)


Here's the new output from ioreg -l when trying this:

| | | | +-o Sony DI Accessory@b100000 <class IOUSBDevice, registered, matched, active, busy 1, retain count 9>
| | | | | {
| | | | | "PortNum" = 1
| | | | | "IOUserClientClass" = "IOUSBDeviceUserClient"
| | | | | "Device Speed" = 1
| | | | | "iSerialNumber" = 0
| | | | | "Bus Power Available" = 250
| | | | | "IOGeneralInterest" = "IOCommand is not serializable"
| | | | | "bDeviceClass" = 0
| | | | | "USB Product Name" = "Sony DI Accessory"
| | | | | "bNumConfigurations" = 1
| | | | | "iManufacturer" = 1
| | | | | "USB Vendor Name" = "Sony Corporation"
| | | | | "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
| | | | | "bcdDevice" = 256
| | | | | "bDeviceSubClass" = 0
| | | | | "iProduct" = 2
| | | | | "sessionID" = 233334704278
| | | | | "bMaxPacketSize0" = 8
| | | | | "locationID" = 185597952
| | | | | "idProduct" = 664
| | | | | "USB Address" = 6
| | | | | "bDeviceProtocol" = 0
| | | | | "idVendor" = 1356
| | | | | }
| | | | |
| | | | +-o IOUSBCompositeDriver <class IOUSBCompositeDriver, !registered, !matched, active, busy 0, retain count 4>
| | | | | {
| | | | | "IOMatchCategory" = "IODefaultMatchCategory"
| | | | | "IOClass" = "IOUSBCompositeDriver"
| | | | | "bDeviceClass" = 0
| | | | | "IOProviderClass" = "IOUSBDevice"
| | | | | "bDeviceSubClass" = 0
| | | | | "CFBundleIdentifier" = "com.apple.driver.AppleUSBComposite"
| | | | | "IOProbeScore" = 50000
| | | | | }
| | | | |
| | | | +-o IOUSBInterface@0 <class IOUSBInterface, registered, matched, active, busy 1, retain count 7>
| | | | | | {
| | | | | | "IOUserClientClass" = "IOUSBInterfaceUserClient"
| | | | | | "idProduct" = 664
| | | | | | "IOCFPlugInTypes" = {"2d9786c6-9ef3-11d4-ad51-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
| | | | | | "iInterface" = 0
| | | | | | "bAlternateSetting" = 0
| | | | | | "bConfigurationValue" = 1
| | | | | | "bInterfaceProtocol" = 80
| | | | | | "bInterfaceNumber" = 0
| | | | | | "bInterfaceSubClass" = 6
| | | | | | "idVendor" = 1356
| | | | | | "bInterfaceClass" = 8
| | | | | | "locationID" = 185597952
| | | | | | "bNumEndpoints" = 2
| | | | | | "bcdDevice" = 256
| | | | | | }
| | | | | |
| | | | | +-o IOUSBMassStorageClass <class IOUSBMassStorageClass, registered, matched, active, busy 1, retain count 10>
| | | | | | | {
| | | | | | | "Power Management protected data" = "{ theNumberOfPowerStates = 2, version 1, power state 0 = { capabilityFlags 00000000, outputPowerCharacter 00000000, inputPowerRequirement 00000000, staticPower 0, unbudgetedPower 0, powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, power state 1 = { capabilityFlags 0000c080, outputPowerCharacter 00000002, inputPowerRequirement 00000002, staticPower 65535, unbudgetedPower 0, powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, aggressiveness = 0, myCurrentState = 1, parentsCurrentPowerFlags = 00000002, maxCapability = 1 }"
| | | | | | | "Write Time Out Duration" = 30000
| | | | | | | "Read Time Out Duration" = 30000
| | | | | | | "CFBundleIdentifier" = "com.apple.iokit.IOUSBMassStorageClass"
| | | | | | | "IOClass" = "IOUSBMassStorageClass"
| | | | | | | "Protocol Characteristics" = {"Write Time Out Duration"=30000,"Read Time Out Duration"=30000,"Physical Interconnect"="USB","Physical Interconnect Location"="External"}
| | | | | | | "IOProbeScore" = 50000
| | | | | | | "Power Management private data" = "{ this object = 02eb5400, interested driver = 02eb5400, driverDesire = 1, deviceDesire = 1, ourDesiredPowerState = 1, previousRequest = 66 }"
| | | | | | | "IOMatchCategory" = "IODefaultMatchCategory"
| | | | | | | "Physical Interconnect Location" = "External"
| | | | | | | "bInterfaceSubClass" = 6
| | | | | | | "Physical Interconnect" = "USB"
| | | | | | | "bInterfaceClass" = 8
| | | | | | | "IOProviderClass" = "IOUSBInterface"
| | | | | | | }
| | | | | | |
| | | | | | +-o IOSCSIPeripheralDeviceNub <class IOSCSIPeripheralDeviceNub, registered, matched, active, busy 1, retain count 5>
| | | | | | | {
| | | | | | | "Vendor Identification" = "GENERIC"
| | | | | | | "Product Identification" = "Card Memory R/W"
| | | | | | | "CFBundleIdentifier" = "com.apple.iokit.IOSCSIArchitectureModelFamily"
| | | | | | | "IOClass" = "IOSCSIPeripheralDeviceNub"
| | | | | | | "Protocol Characteristics" = {"Write Time Out Duration"=30000,"Read Time Out Duration"=30000,"Physical Interconnect"="USB","Physical Interconnect Location"="External"}
| | | | | | | "Peripheral Device Type" = 0
| | | | | | | "IOProbeScore" = 0
| | | | | | | "IOMatchCategory" = "SCSITaskUserClientIniter"
| | | | | | | "Product Revision Level" = "1.00"
| | | | | | | "IOProviderClass" = "IOSCSIProtocolServices"
| | | | | | | }
| | | | | | |
| | | | | | +-o IOSCSIPeripheralDeviceType00 <class IOSCSIPeripheralDeviceType00, !registered, !matched, active, busy 1, retain count 11>
| | | | | | | {
| | | | | | | "Power Management protected data" = "{ theNumberOfPowerStates = 5, version 1, power state 0 = { capabilityFlags 00000000, outputPowerCharacter 00000000, inputPowerRequirement 00000000, staticPower 0, unbudgetedPower 0, powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, power state 1 = { capabilityFlags 00000000, outputPowerCharacter 00000002, inputPowerRequirement 00000002, staticPower 0, unbudgetedPower 0, powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, power state 2 = { capabilityFlags 00008040, outputPowerCharacter 00000002, inputPowerRequirement 00000002, staticPower 0, unbudgetedPower 0, powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, power state 3 = { capabilityFlags 00008040, outputPowerCharacter 00000002, inputPowerRequirement 00000002, staticPower 0, unbudgetedPower 0, powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, power state 4 = { capabilityFlags 0000c040, outputPowerCharacter 00000002, inputPowerRequirement 00000002, staticPower 0, unbudgetedPower 0, powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, aggressiveness = 0, myCurrentState = 2, parentsCurrentPowerFlags = 00000002, maxCapability = 4 }"
| | | | | | | "IOMaximumBlockCountWrite" = 65535
| | | | | | | "CFBundleIdentifier" = "com.apple.iokit.IOSCSIBlockCommandsDevice"
| | | | | | | "IOClass" = "IOSCSIPeripheralDeviceType00"
| | | | | | | "Peripheral Device Type" = 0
| | | | | | | "IOProbeScore" = 5000
| | | | | | | "Power Management private data" = "{ this object = 02d4bb00, interested driver = 02d4bb00, driverDesire = 1, deviceDesire = 2, ourDesiredPowerState = 2, previousRequest = 66 }"
| | | | | | | "IOMatchCategory" = "IODefaultMatchCategory"
| | | | | | | "IOMaximumBlockCountRead" = 65535
| | | | | | | "IOProviderClass" = "IOSCSIPeripheralDeviceNub"
| | | | | | | }
| | | | | | |
| | | | | | +-o IOBlockStorageServices <class IOBlockStorageServices, registered, matched, active, busy 1, retain count 6>
| | | | | | | {
| | | | | | | "Protocol Characteristics" = {"Write Time Out Duration"=30000,"Read Time Out Duration"=30000,"Physical Interconnect"="USB","Physical Interconnect Location"="External"}
| | | | | | | "IOMaximumSegmentCountWrite" = 32
| | | | | | | "Device Characteristics" = {"Product Revision Level"="1.00","Vendor Name"="GENERIC","Product Name"="Card Memory R/W"}
| | | | | | | "device-type" = "Generic"
| | | | | | | "IOMaximumSegmentCountRead" = 32
| | | | | | | }
| | | | | | |
| | | | | | +-o IOBlockStorageDriver <class IOBlockStorageDriver, registered, matched, active, busy 1, retain count 6>
| | | | | | | {
| | | | | | | "IOMatchCategory" = "IODefaultMatchCategory"
| | | | | | | "IOClass" = "IOBlockStorageDriver"
| | | | | | | "Statistics" = {"Errors (Read)"=0,"Total Time (Write)"=0,"Latency Time (Read)"=0,"Bytes (Read)"=0,"Latency Time (Write)"=0,"Retries (Read)"=0,"Bytes (Write)"=0,"Errors (Write)"=0,"Operations (Read)"=0,"Retries (Write)"=0,"Operations (Write)"=0,"Total Time (Read)"=0}
| | | | | | | "IOProviderClass" = "IOBlockStorageDevice"
| | | | | | | "IOPropertyMatch" = {"device-type"="Generic"}
| | | | | | | "CFBundleIdentifier" = "com.apple.iokit.IOStorageFamily"
| | | | | | | "IOProbeScore" = 0
| | | | | | | }
| | | | | | |
| | | | | | +-o GENERIC Card Memory R/W Media <class IOMedia, !registered, matched, active, busy 1, retain count 8>
| | | | | | | {
| | | | | | | "Leaf" = No
| | | | | | | "Writable" = No
| | | | | | | "Preferred Block Size" = 512
| | | | | | | "Size" = 33546752
| | | | | | | "Content Hint" = ""
| | | | | | | "Removable" = Yes
| | | | | | | "IOMediaIcon" = {"IOBundleResourceFile"="Removable.icns","CFBundleIdentifier"="com.apple.iokit.IOStorageFamily"}
| | | | | | | "Ejectable" = Yes
| | | | | | | "Content" = "GUID_partition_scheme"
| | | | | | | "Whole" = Yes
| | | | | | | }
| | | | | | |
| | | | | | +-o IOGUIDPartitionScheme <class IOGUIDPartitionScheme, !registered, !matched, active, busy 0, retain count 6>
| | | | | | {
| | | | | | "IOMatchCategory" = "IOStorage"
| | | | | | "IOProbeScore" = 4000
| | | | | | "IOClass" = "IOGUIDPartitionScheme"
| | | | | | "IOProviderClass" = "IOMedia"
| | | | | | "IOPropertyMatch" = {"Whole"=Yes}
| | | | | | "CFBundleIdentifier" = "com.apple.iokit.IOStorageFamily"
| | | | | | "Content Mask" = "GUID_partition_scheme"
| | | | | | }
| | | | | |
| | | | | +-o IOUSBUserClientInit <class IOUSBUserClientInit, !registered, !matched, active, busy 0, retain count 4>
| | | | | {
| | | | | "IOMatchCategory" = "IOUSBUserClientInit"
| | | | | "IOProbeScore" = 9000
| | | | | "IOClass" = "IOUSBUserClientInit"
| | | | | "IOProviderClass" = "IOUSBInterface"
| | | | | "CFBundleIdentifier" = "com.apple.iokit.IOUSBUserClient"
| | | | | "IOProviderMergeProperties" = {"IOUserClientClass"="IOUSBInterfaceUserClient","IOCFPlugInTypes"={"2d9786c6-9ef3-11d4-ad51-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}}
| | | | | }
| | | | |
| | | | +-o IOUSBUserClientInit <class IOUSBUserClientInit, !registered, !matched, active, busy 0, retain count 4>
| | | | {
| | | | "IOMatchCategory" = "IOUSBUserClientInit"
| | | | "IOProbeScore" = 9000
| | | | "IOClass" = "IOUSBUserClientInit"
| | | | "IOProviderClass" = "IOUSBDevice"
| | | | "CFBundleIdentifier" = "com.apple.iokit.IOUSBUserClient"
| | | | "IOProviderMergeProperties" = {"IOUserClientClass"="IOUSBDeviceUserClient","IOCFPlugInTypes"={"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}}
| | | | }

Stephen said...

Also, with a memory stick, I appear to get a different match -

Generic USB Storage-MSC Media <class IOMedia>
instead of
GENERIC Card Memory R/W Media <class IOMedia>

| | | | | | +-o IOSCSILogicalUnitNub@3 <class IOSCSILogicalUnitNub, registered, matched, active, busy 0, retain count 6>
| | | | | | | {
| | | | | | | "IOMatchCategory" = "SCSITaskUserClientIniter"
| | | | | | | "Protocol Characteristics" = {"Physical Interconnect"="USB","Read Time Out Duration"=30000,"SCSI Logical Unit Number"=3,"Physical Interconnect Location"="External","Write Time Out Duration"=30000}
| | | | | | | "Vendor Identification" = "Generic"
| | | | | | | "Product Revision Level" = "320D"
| | | | | | | "SCSI Logical Unit Number" = 3
| | | | | | | "IOUnitLUN" = 3
| | | | | | | "Peripheral Device Type" = 0
| | | | | | | "Product Identification" = "USB Storage-MSC"
| | | | | | | }
| | | | | | |
| | | | | | +-o IOSCSIPeripheralDeviceType00 <class IOSCSIPeripheralDeviceType00, !registered, !matched, active, busy 0, retain count 8>
| | | | | | | {
| | | | | | | "Power Management protected data" = "{ theNumberOfPowerStates = 5, version 1, power state 0 = { capabilityFlags 00000000, outputPowerCharacter 00000000, inputPowerRequirement 00000000, staticPower 0, unbudgetedPower 0, powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, power state 1 = { capabilityFlags 00000000, outputPowerCharacter 00000002, inputPowerRequirement 00000002, staticPower 0, unbudgetedPower 0, powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, power state 2 = { capabilityFlags 00008040, outputPowerCharacter 00000002, inputPowerRequirement 00000002, staticPower 0, unbudgetedPower 0, powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, power state 3 = { capabilityFlags 00008040, outputPowerCharacter 00000002, inputPowerRequirement 00000002, staticPower 0, unbudgetedPower 0, powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, power state 4 = { capabilityFlags 0000c040, outputPowerCharacter 00000002, inputPowerRequirement 00000002, staticPower 0, unbudgetedPower 0, powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, aggressiveness = 0, myCurrentState = 2, parentsCurrentPowerFlags = 00000002, maxCapability = 4 }"
| | | | | | | "IOMaximumBlockCountWrite" = 65535
| | | | | | | "CFBundleIdentifier" = "com.apple.iokit.IOSCSIBlockCommandsDevice"
| | | | | | | "IOClass" = "IOSCSIPeripheralDeviceType00"
| | | | | | | "Peripheral Device Type" = 0
| | | | | | | "IOProbeScore" = 5000
| | | | | | | "Power Management private data" = "{ this object = 03184500, interested driver = 03184500, driverDesire = 1, deviceDesire = 2, ourDesiredPowerState = 2, previousRequest = 66 }"
| | | | | | | "IOMatchCategory" = "IODefaultMatchCategory"
| | | | | | | "IOMaximumBlockCountRead" = 65535
| | | | | | | "IOProviderClass" = "IOSCSIPeripheralDeviceNub"
| | | | | | | }
| | | | | | |
| | | | | | +-o IOBlockStorageServices <class IOBlockStorageServices, registered, matched, active, busy 0, retain count 5>
| | | | | | | {
| | | | | | | "Protocol Characteristics" = {"Physical Interconnect"="USB","Read Time Out Duration"=30000,"SCSI Logical Unit Number"=3,"Physical Interconnect Location"="External","Write Time Out Duration"=30000}
| | | | | | | "IOMaximumSegmentCountWrite" = 32
| | | | | | | "Device Characteristics" = {"Product Revision Level"="320D","Vendor Name"="Generic","Product Name"="USB Storage-MSC"}
| | | | | | | "device-type" = "Generic"
| | | | | | | "IOMaximumSegmentCountRead" = 32
| | | | | | | }
| | | | | | |
| | | | | | +-o IOBlockStorageDriver <class IOBlockStorageDriver, registered, matched, active, busy 0, retain count 7>
| | | | | | | {
| | | | | | | "IOMatchCategory" = "IODefaultMatchCategory"
| | | | | | | "IOGeneralInterest" = "IOCommand is not serializable"
| | | | | | | "IOClass" = "IOBlockStorageDriver"
| | | | | | | "Statistics" = {"Errors (Read)"=0,"Total Time (Write)"=1070804240,"Latency Time (Read)"=0,"Bytes (Read)"=868352,"Latency Time (Write)"=0,"Retries (Read)"=0,"Bytes (Write)"=200704,"Errors (Write)"=0,"Operations (Read)"=56,"Retries (Write)"=0,"Operations (Write)"=11,"Total Time (Read)"=1424468324}
| | | | | | | "IOProviderClass" = "IOBlockStorageDevice"
| | | | | | | "IOPropertyMatch" = {"device-type"="Generic"}
| | | | | | | "CFBundleIdentifier" = "com.apple.iokit.IOStorageFamily"
| | | | | | | "IOProbeScore" = 0
| | | | | | | }
| | | | | | |
| | | | | | +-o Generic USB Storage-MSC Media <class IOMedia, registered, matched, active, busy 0, retain count 9>
| | | | | | | {
| | | | | | | "Leaf" = No
| | | | | | | "Writable" = Yes
| | | | | | | "BSD Minor" = 3
| | | | | | | "IOBusyInterest" = "IOCommand is not serializable"
| | | | | | | "Preferred Block Size" = 512
| | | | | | | "BSD Major" = 14
| | | | | | | "BSD Name" = "disk2"
| | | | | | | "Size" = 957349888
| | | | | | | "Content Hint" = ""
| | | | | | | "Removable" = Yes
| | | | | | | "IOMediaIcon" = {"IOBundleResourceFile"="Removable.icns","CFBundleIdentifier"="com.apple.iokit.IOStorageFamily"}
| | | | | | | "BSD Unit" = 2
| | | | | | | "Ejectable" = Yes
| | | | | | | "Content" = "FDisk_partition_scheme"
| | | | | | | "Whole" = Yes
| | | | | | | }
| | | | | | |
| | | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, registered, matched, active, busy 0, retain count 5>
| | | | | | | {
| | | | | | | "IOProbeScore" = 30000
| | | | | | | "IOResourceMatch" = "IOBSD"
| | | | | | | "IOClass" = "IOMediaBSDClient"
| | | | | | | "IOProviderClass" = "IOMedia"
| | | | | | | "CFBundleIdentifier" = "com.apple.iokit.IOStorageFamily"
| | | | | | | "IOMatchCategory" = "IOMediaBSDClient"
| | | | | | | }
| | | | | | |
| | | | | | +-o IOFDiskPartitionScheme <class IOFDiskPartitionScheme, !registered, !matched, active, busy 0, retain count 6>
| | | | | | | {
| | | | | | | "IOMatchCategory" = "IOStorage"
| | | | | | | "IOProbeScore" = 3000
| | | | | | | "IOClass" = "IOFDiskPartitionScheme"
| | | | | | | "Content Table" = {"0x0C"="Windows_FAT_32","0x07"="Windows_NTFS","0xAB"="Apple_Boot","0xA6"="OpenBSD","0x16"="DOS_FAT_16_Hidden","0x42"="Windows_LDM","0x8E"="Linux_LVM","0x14"="DOS_FAT_16_S_Hidden","0xA9"="NetBSD","0x82"="Linux_Swap","0x01"="DOS_FAT_12","0xA7"="Apple_Rhapsody_UFS","0x0B"="DOS_FAT_32","0x06"="DOS_FAT_16","0xA5"="FreeBSD","0xFD"="Linux_RAID","0x04"="DOS_FAT_16_S","0xAF"="Apple_HFS","0x0E"="Windows_FAT_16","0x83"="Linux","0xA8"="Apple_UFS"}
| | | | | | | "IOProviderClass" = "IOMedia"
| | | | | | | "IOPropertyMatch" = {"Whole"=Yes}
| | | | | | | "CFBundleIdentifier" = "com.apple.iokit.IOStorageFamily"
| | | | | | | "Content Mask" = "FDisk_partition_scheme"
| | | | | | | }
| | | | | | |
| | | | | | +-o Untitled 1@1 <class IOMedia, registered, matched, active, busy 0, retain count 8>
| | | | | | | {
| | | | | | | "Leaf" = Yes
| | | | | | | "Writable" = Yes
| | | | | | | "BSD Minor" = 4
| | | | | | | "IOBusyInterest" = "IOCommand is not serializable"
| | | | | | | "Partition ID" = 1
| | | | | | | "Preferred Block Size" = 512
| | | | | | | "BSD Major" = 14
| | | | | | | "BSD Name" = "disk2s1"
| | | | | | | "Size" = 956238336
| | | | | | | "Content Hint" = "DOS_FAT_16"
| | | | | | | "Removable" = Yes
| | | | | | | "BSD Unit" = 2
| | | | | | | "Ejectable" = Yes
| | | | | | | "Content" = "DOS_FAT_16"
| | | | | | | "Whole" = No
| | | | | | | }
| | | | | | |
| | | | | | +-o IOMediaBSDClient <class IOMediaBSDClient, registered, matched, active, busy 0, retain count 6>
| | | | | | {
| | | | | | "IOProbeScore" = 30000
| | | | | | "IOResourceMatch" = "IOBSD"
| | | | | | "IOClass" = "IOMediaBSDClient"
| | | | | | "IOProviderClass" = "IOMedia"
| | | | | | "CFBundleIdentifier" = "com.apple.iokit.IOStorageFamily"
| | | | | | "IOMatchCategory" = "IOMediaBSDClient"
| | | | | | }

Stephen said...

My theory is that the GPS-CS1 should match to IOMediaBSDClient. If the USB Logger is turned up to 7, I wonder if it would show why it is matching to AppleXsanFilter (or IOGUIDPartitionScheme if AppleXsanFilter.kext is moved)instead - i.e. would it show if/why an attempt to match on IOMediaBSDClient failed?

Unfortunately I can't get USB Logger to work on my Mac (consistently crashes the Mac) - could anyone else post a full log at level 7?

Cheers

Anonymous said...

Hi

Yes, I too fell in love with the CS1 the day it was launched. But as another Mac user I was holding off on buying one. BTW have you seen the CS1 is now $99 on Amazon.com and £99 on SonyStyle. Even with postage and VAT it would almost be worth buying one from the USA at the moment.

Good luck guys in making it work. I will check back soon to get the latest.

Mark (UK)

Anonymous said...

Voicing my support for this project as a mac user who would like to buy the product but won't until it works on my baby.

Kevin said...

anyone knows anything about this? thanks

http://lists.apple.com/archives/Usb//2006/Dec/msg00039.html

Søren said...

Thanks for creating this blog.
I just got my GPS-CS1 and I really really want it to work on my Mac.

Meikel said...

I received a cs-1 for xmas as well and on an iBook G4 as well as on a powerbook 17" G4 it doesn't show up as a usb device. Buuuuuut on the brandnew Macbook from my sister running OS X 10.4.8 the cs-1 works without any problems. It is mounted as No Name and you can drag the log files onto your desktop.

Is there anything which I should capture from that macbook so that we can see what needs to be done on the other macs to get it work? Any application I should run? I saved the Apple System Profiler XML file which I can send around by request.

Just let me know if I could provide anything to make the cs-1 working on all macs

meikel@gmail.com

Edward said...

Pretty please with a cherry on top?
I have a gen 1 macbook and i need this device before the 21st of feb when i go travelling!!!!!!!!

Im prepared to rent my self out to young single women if needs be!

:)

ed

Anonymous said...

I'd love to see mac support for the GPS-CS1!

iMac Intel Core Duo.

Batman said...

Works perfectly for new macbookpro...
It mounts like a disk.

Other users should wait osX 10.4.9 ...

Anonymous said...

Thank you so much for the blog and the tips. I own a Macbook Pro, and as a matter of fact I do see this log file but I definitely don't know how to use it. Is there someone who could be kind enough to help me ? Thanks in advance.

Bertrand