View Full Version : Comunicare su "usb" con API fireware
Salve,
E' il mio primo messaggio e sono già a chiedere... cercherò di dare il mio contributo al forum in seguito...
Per ora grazie in anticipo a chi mi presterà attenzione...
Vengo al problema:
Io ho il mio robot con interfaccia Firewire1394 che comunica con il pc che ha interfaccia Firewire1394 sul quale scrivo dei programmi c che usano usano API create per comunicare su 1394.
Fin Qui ok.
Allora.......
Ho un convertitore usb-firewire,
secondo voi facendo questo tipo di collegamento:
| Robot -->| 1394| |-------------|Convertitore 1394 - USB | -------------| USB | -- PC |
è possibile far funzionare i programmi C con API per firewire ?
Fin qui tutto collegato, il problema sono le api che comunicano su 1394.
E' possibile fare qualche cosa su linux in modo che il PC grazie al convertitore usb - firewire veda una porta firewire anzichè usb ? in mnodo che le API funzionino correttamente ???
Non mi sembra una cosa semplice ma se qualcuno ha già avuto esperienza con collegamenti di questo tipo e avesse qualche consiglio.....
Grazie
ilsensine
27-03-2007, 12:54
Tutto dipende se il bridge usb-fw viene riconosciuto. In genere dispositivi di questo tipo usano un bridge usb-pci e un normale chip pci per implementare il dispositivo (nel tuo caso fw). Se è così, vedrai semplicemente una porta fw aggiuntiva.
Se non è così, non credo ci sia molto da fare. L'unica cosa è provare e vedere cosa dice il kernel.
Grazie per la risposta, purtroppo il ponte non viene riconosciuto.
Dovrò cercare un'altra interfaccia probabilmente.
Grazie ancora
ilsensine
27-03-2007, 17:26
Per curiosità, puoi allegarmi l'output di lsusb -v e dmesg? (con il paperweight collegato, ovviamente)
ciao,
In pratica il dispositivo è un'interfaccia aptica (un phantom prodotto da SensAble) il produttore naturalmente non produce driver aperti.
viene fornito un script di configurazione in cui in base al modello del Phantom è possibile selezionare la porta di comunicazione, nel mio caso il modello comunica su firewire. Questo processo produce un file .ini (che ti ho allegato).
lanciando un strace per osservare le informazioni che si scambia un programma che usa queste API e il Sistema Operativo vedo che il file .ini viene letto e probabilmente in base alla porta di comunicazione viene scelto il driver adatto.
ho allegato l'output di lsusb senza dispositivo (lsusb.txt) e con distpositivo collegato (lsusb2.txt).
L'output di dmesg è quello che ottengo con il dispositivo collegato.
I Requirements delle API sono nel README.
E' un "tantino" ostica probabilmente con i driver chiusi poter personalizzare la cosa.
Mi serviva la comunicazione su usb per avere la possibilità di montare l'interfaccia su sistemi embedded linux con Slack com SO che comunicano su usb.
Penso di non essermi dimenticato di niente..
Grazie
ilsensine
28-03-2007, 10:00
ho allegato l'output di lsusb senza dispositivo (lsusb.txt) e con distpositivo collegato (lsusb2.txt).
Nel secondo file non viene mostrato alcun nuovo dispositivo...
L'output di dmesg è quello che ottengo con il dispositivo collegato.
...e dmesg spiega il motivo. In teoria neanche il driver proprietario dovrebbe essere in grado di comunicare con quel dispositivo...
Innanzi tutto grazie per aver visto la cosa..
Nel secondo file non viene mostrato alcun nuovo dispositivo...
Infatti, lsusb -v alla fine arriva a testare le prime due porte e la verifica và a buon fine, quando arriva alla terza il test fallisce e non continua neanche il controllo delle altre porte usb. Mi restituisce questo messaggio:
"cannot read port 3 status, Broken pipe (32)"
(Solo quando collego il dispositivo)
ed effettivamente il dmesg non riesce ad inizializzare quella porta quando collego il dipositivo; secondo me perchè non c'è scritto da nessuna parte del codice adatto per la gestione di quel convertitore.
effettivamente il convertitore non penso che abbia il firmware per gestire la conversione dal protocollo usb al firewire e viceversa.
La cosa che mi viene da pensare ora e che devo rimettermi alla ricerca di un convertitore usb-firewire con un microcontrollore a bordo che mi gestisca la conversione tra i due protocolli.
Che ne pensi ?
Sbaglio qualcosa?
Foto convertitore:
http://zer0un0.altervista.org/upload/firewire-usb.jpg
ilsensine
28-03-2007, 12:01
Penso che il problema è addirittura a monte; per qualche difetto del controller usb, del dispositivo, o del driver del controller, non si riesce ad inizializzare il dispositivo usb trovato (staimo ancora molto prima dal porci il problema se il dispositivo è un controller firewire, un disco o una webcam -- stiamo cercando di vedere cosa c'è attaccato).
Quel dannato ehci_hcd ha dato problemi anche a me su alcuni computer...
Quel dannato ehci_hcd ha dato problemi anche a me su alcuni computer...
Secondo me il software di gestione dell'interfaccia hardware USB 2.0, l'ehci_hcd appunto, cerca di associare il dispositivo a qualche classe (HID, Mass Storage, CDC) per poter usare i driver di quella classe per inizializzare quella porta, peccato che il dispositivo con il quale vorre parlare usb non è di uso tanto comune quindi difficilmente penso che possa rientrare in qualcuna di queste classi.
Comunque grazie..
Vedremo se mi viene qualche idea... :muro:
Spero di ricambiare se ne dovessi avere il bisogno.
;)
ilsensine
28-03-2007, 14:21
Secondo me il software di gestione dell'interfaccia hardware USB 2.0, l'ehci_hcd appunto, cerca di associare il dispositivo a qualche classe (HID, Mass Storage, CDC) per poter usare i driver di quella classe per inizializzare quella porta, peccato che con il dispositivo con il quale vorre parlare usb non è di uso tanto comune quindi difficilmente penso che possa rientrare in qualcuna di queste classi.
Nonee
Il controller non riesce proprio a dialogare con il dispositivo, non ci arriva neanche a capire a che classe appartiene. E' un problema hardware, o del driver ehci_hcd come temo.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.