Ajutor - Driver USBCDCACM
  [ Ignoră ]
Avatar
RankRankRankRank
Administrator
Din: The Colony, TX
Macuser din: 11.10.05

Salutare programatori și haxoratori de OS X.

Am un device (Olimex DuinoMite cu ultimul firmware) și am nevoie de un driver pt el.

Sub Linux e detectat ca:

T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=12  MxCh= 0
D:  Ver2.00 Cls=ef(misc Sub=02 Prot=01 MxPS#Cfgs=  1
P:  Vendor=04d8 ProdID=0057 Rev=00.01
S
:  Manufacturer=Olimex.
S:  Product=DuinoMite Composite Device
C
:  #Ifs= 3 Cfg#= 1 Atr=c0 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
I:  If#= 1 Alt= 0 #EPs= 1 Cls=02(commc) Sub=02 Prot=01 Driver=cdc_acm
I:  If#= 2 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_acm 

Mac OS X însă (10.6.8) nu vrea neam:

USBMSC Identifier (non-unique): 0x4d8 0x57 0x1
       0        0 AppleUSBCDCACMControl
start Failed to find the CDC driver
       0        2 AppleUSBCDCACMData
start Find CDC driver for data interface failed 

Trebuie să-i explic cumva OSX-ului să pună “ghiara” pe portul serial și să-mi facă un /dev/tty.usbSomething
S-a jucat cineva cu așa ceva ?

Mulțumesc.

 Semnătură 

Apple:5x macmini (G4, 2007, 2009, 2010, 2012)
UNIX:IBM 7011-250/AIX 5.1, HP Jornada 680/JLime, HP 9000 F20/HP-UX 11.11
PC:PentiumD/Debian, HP t5300/Debian
Misc:Spectrum 48k, 8x Raspberry Pi, 2x CHIP

Profil
 
  [ Ignoră ]   [ # 1 ]
Avatar
RankRankRankRank
Administrator
Din: The Colony, TX
Macuser din: 11.10.05

Instalat USB Prober & driverele cu logging:

Full Speed device (0x24712000): .............................................   Miscellaneous/Common Class device"DuinoMite Composite Device\000\000"
    
Port Information:   0x0018
           Not Captive
           External Device
           Connected
           Enabled
    Device Descriptor   
        Descriptor Version Number
:   0x0200
        Device 
Class:   239   (Miscellaneous)
        
Device Subclass:   2   (Common Class)
        
Device Protocol:   1   (Interface Association)
        
Device MaxPacketSize:   8
        Device VendorID
/ProductID:   0x04D8/0x0057   (Microchip Technology Inc.)
        
Device Version Number:   0x0001
        Number of Configurations
:   1
        Manufacturer String
:   "Olimex."
        
Product String:   "DuinoMite Composite Device\000\000"
        
Serial Number String:   (none)
    
Configuration Descriptor (current config): ......................   "DuinoMite Composite Device\000\000"
        
Length (and contents):   98
            Raw Descriptor 
(hex)    000009 02 62 00 03 01 02 C0  32 09 04 00 00 02 08 06  
            Raw Descriptor 
(hex)    001050 00 07 05 81 02 40 00  01 07 05 01 02 40 00 01  
            Raw Descriptor 
(hex)    002008 0B 01 02 02 02 01 00  09 04 01 00 01 02 02 01  
            Raw Descriptor 
(hex)    003000 05 24 00 01 14 04 24  02 02 05 24 06 01 02 05  
            Raw Descriptor 
(hex)    004024 01 00 02 07 05 82 03  08 00 02 09 04 02 00 02  
            Raw Descriptor 
(hex)    00500A 00 00 00 07 05 03 02  40 00 00 07 05 83 02 40  
            Raw Descriptor 
(hex)    006000 00 
        Number of Interfaces
:   3
        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 0x81 
Bulk Input   
                Address
:   0x81  (IN)
                
Attributes:   0x02  (Bulk no synchronization data endpoint)
                
Max Packet Size:   64
                Polling Interval
:   1 ms
            Endpoint 0x01 
Bulk Output   
                Address
:   0x01  (OUT)
                
Attributes:   0x02  (Bulk no synchronization data endpoint)
                
Max Packet Size:   64
                Polling Interval
:   1 ms
        
Interface Association   Communications-Control
            First 
Interface   1
            
Interface Count   2
            
Function Class   2   (Communications-Control)
            Function 
Subclass   2
            
Interface Protocol   1
            
Function String   0 (none)
        Interface 
#1 - Communications-Control   
            
Alternate Setting   0
            Number of Endpoints   1
            
Interface Class:   2   (Communications-Control)
            Interface 
Subclass;   2
            
Interface Protocol:   1
            Comm 
Class Header Functional Descriptor   
                Raw Descriptor 
(hex)   000005 24 00 01 14 
            Comm 
Class Abstract Control Management Functional Descriptor   
                Raw Descriptor 
(hex)   000004 24 02 02 
            Comm 
Class Union Functional Descriptor   
                Raw Descriptor 
(hex)   000005 24 06 01 02 
            Comm 
Class Call Management Functional Descriptor   
                Raw Descriptor 
(hex)   000005 24 01 00 02 
            Endpoint 0x82 
Interrupt Input   
                Address
:   0x82  (IN)
                
Attributes:   0x03  (Interrupt no synchronization data endpoint)
                
Max Packet Size:   8
                Polling Interval
:   2 ms
        
Interface #2 - Communications-Data/Unknown Comm Class Model   
            
Alternate Setting   0
            Number of Endpoints   2
            
Interface Class:   10   (Communications-Data)
            Interface 
Subclass;   0   (Unknown Comm Class Model)
            Interface 
Protocol:   0
            Endpoint 0x03 
Bulk Output   
                Address
:   0x03  (OUT)
                
Attributes:   0x02  (Bulk no synchronization data endpoint)
                
Max Packet Size:   64
                Polling Interval
:   0 ms
            Endpoint 0x83 
Bulk Input   
                Address
:   0x83  (IN)
                
Attributes:   0x02  (Bulk no synchronization data endpoint)
                
Max Packet Size:   64
                Polling Interval
:   0 ms 
 Semnătură 

Apple:5x macmini (G4, 2007, 2009, 2010, 2012)
UNIX:IBM 7011-250/AIX 5.1, HP Jornada 680/JLime, HP 9000 F20/HP-UX 11.11
PC:PentiumD/Debian, HP t5300/Debian
Misc:Spectrum 48k, 8x Raspberry Pi, 2x CHIP

Profil
 
  [ Ignoră ]   [ # 2 ]
Avatar
RankRankRankRank
Administrator
Din: The Colony, TX
Macuser din: 11.10.05

Ce vreau eu se pare că se numește “Codeless Kext” - este doar un .plist care instructează kernelul ca pentru device-ul ăsta să folosească anumite drivere deja existente. Sub linux totul e detectat și funcțional cu driverele ACM standard, deci ar trebui să meargă și sub OS X.
Nu a făcut nimeni așa ceva ?

 Semnătură 

Apple:5x macmini (G4, 2007, 2009, 2010, 2012)
UNIX:IBM 7011-250/AIX 5.1, HP Jornada 680/JLime, HP 9000 F20/HP-UX 11.11
PC:PentiumD/Debian, HP t5300/Debian
Misc:Spectrum 48k, 8x Raspberry Pi, 2x CHIP

Profil
 
  [ Ignoră ]   [ # 3 ]
Avatar
RankRankRank
Member
Din: București
Macuser din: 18.05.07

Nu sunt sigur că te va ajuta, dar:
Eu am avut o problema cu un adaptor USB-RS232 (UC-232) pentru care nu aveam drivere in Lion. După căutări pe net am găsit drivere pentru un alt dispozitiv cu chipset compatibil (Prolific) dar care avea Vendor ID/Product ID diferite.

Am editat Info.plist din interiorul bundle-ului .kext ( /System/Library/Extensions/ProlificUsbSerial.kext/Contents/Info.plist )
și am înlocuit id-ul de produs și vendor cu cele pe care le-am găsit cu System Information (Atenție! în plist trebuiesc scrise în zecimal, System Information le dă în hexa):

<dict>
                <
key>067B_2303</key>
                <
dict>
                        <
key>CFBundleIdentifier</key>
                        <
string>com.prolific.driver.PL2303</string>
                        <
key>IOClass</key>
                        <
string>com_prolific_driver_PL2303</string>
                        <
key>IOProviderClass</key>
                        <
string>IOUSBInterface</string>
                        <
key>bConfigurationValue</key>
                        <
integer>1</integer>
                        <
key>bInterfaceNumber</key>
                        <
integer>0</integer>
                        <
key>idProduct</key>
                        <
integer>8963</integer>
                        <
key>idVendor</key>
                        <
integer>1659</integer>
                </
dict>
        </
dict

apoi kextload /System/Library/Extensions/ProlificUsbSerial.kext și a mers, adica mi-a creat /dev/tty.usbserial sau cam asa ceva și am putut să mă leg cu screen la el.

Tagul “<key>067B_2303</key>” e cel original (id-ul vendor/product hexa ale device-ului pentru care era destinat driverul; dacă socotești vezi că sunt alte id-uri); nu mai știu dacă am încercat să creez încă un <dict> și nu a mers sau pur și simplu am preferat quick-and-dirty; nu am adaptorul aici ca să încerc; dacă e cazul mai sap diseară.

Profil