[Risolto]Un asteroide: compilare sorgente di un driver

Riconoscimento, installazione e configurazione delle periferiche.
Ghingon
Prode Principiante
Messaggi: 15
Iscrizione: venerdì 1 giugno 2012, 21:12

[Risolto]Un asteroide: compilare sorgente di un driver

Messaggio da Ghingon »

Ciao ragazzi,
sono nuovo del forum ed alle prime armi con Ubuntu.
Ho provato ad utilizzare un dac usb con ubuntu, ma non viene riconosciuto.
L'azienda costruttrice (Teac) su richiesta fatta su un loro form, mi ha inviato il codice sorgente del driver del dispositivo.
Mi aspettavo un pacchetto da installare (.deb) ed invece mi è arrivata una cartella piena di files, e non saprei dire che cosa sia.
I files contenuti hanno estesione:

.h
.cpp
.plist
.mode1v3
.pbxuser
.pbcproj
.strings

E' qualcosa che si può installare su ubuntu 12.04 oppure come immagino la cosa diventa particolarmente complessa?
Vi ringrazio per la pazienza di avermi letto.

P.S. Per chi volesse approfondire la questione https://answers.launchpad.net/ubuntu/+question/198752
Ultima modifica di Ghingon il giovedì 14 giugno 2012, 21:26, modificato 3 volte in totale.
Avatar utente
Laycastle
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1183
Iscrizione: sabato 9 aprile 2011, 21:54
Desktop: KDE 4.8
Distribuzione: Gentoo ~amd64
Località: Torino

Re: Un asteroide nel mio giardino

Messaggio da Laycastle »

Ciao,
non c'è un file readme, install o qualcosa del genere?
la via più breve tra due punti è l'arabesco.
Avatar utente
Stealth
Tenace Tecnocrate
Tenace Tecnocrate
Messaggi: 17368
Iscrizione: martedì 31 gennaio 2006, 22:55
Desktop: Gnome
Distribuzione: Ubuntu 22.04 LTS

Re: Un asteroide nel mio giardino

Messaggio da Stealth »

Se vuoi sperare che qualcuno ti dia una mano cambia il titolo, magari mettici una roba tipo "come compilare sorgente di un driver"
ciao
Ghingon
Prode Principiante
Messaggi: 15
Iscrizione: venerdì 1 giugno 2012, 21:12

Re: Un asteroide nel mio giardino

Messaggio da Ghingon »

Si c'è un file readme. Ti riporto il contenuto:

This ReadMe file for the Apple USB Audio Drivers on OS X contains
a brief overview of the files this directory:

AppleUSBAudioEngine contains the classes AppleUSBAudioEngine which inherits from IOAudioEngine.
This class is responsible for streaming the audio. It sets up the framelists and requests
DMA IO from the IOUSBInterface and IOUSBFindEndpointRequest, using IOUSBLowLatencyIsocFrame
and IOUSBDevRequest, then receives completion from IOUSBCompletion.
Ghingon
Prode Principiante
Messaggi: 15
Iscrizione: venerdì 1 giugno 2012, 21:12

Re: Un asteroide nel mio giardino

Messaggio da Ghingon »

Ti ringrazio Stealth, ma siccome non sapevo bene cosa fosse, avevo un alta possibilità di sbagliare il titolo.
Alla fine il titolo sintetizza quello che mi è successo. Non appena riesco provo ad editare il titolo, seguendo il tuo consiglio.
Avatar utente
centoventicinque
Prode Principiante
Messaggi: 145
Iscrizione: martedì 31 luglio 2007, 11:33
Località: deruta-perugia-umbria

Re: Un asteroide: come compilare sorgente di un driver

Messaggio da centoventicinque »

./configure && make && sudo make install
Ghingon
Prode Principiante
Messaggi: 15
Iscrizione: venerdì 1 giugno 2012, 21:12

Re: Un asteroide: come compilare sorgente di un driver

Messaggio da Ghingon »

Grazie centoventicinque,
appena possibile proverò la strada che mi indichi.
Ghingon
Prode Principiante
Messaggi: 15
Iscrizione: venerdì 1 giugno 2012, 21:12

Re: Un asteroide: come compilare sorgente di un driver

Messaggio da Ghingon »

Ho provato a dare il comando ./configure && make && sudo make install dalla cartella dove risiedono i files del sorgente, ma mi dice "bash: ./configure: Nessun file o directory".
In effetti da quello che mi sembra di capire, dare il comando /configure, prevede che esista uno script configure. Nella cartella non c'è nessun file configure. Dovrei crearlo in qualche modo?
Avatar utente
cristian_c
Accecante Asceta
Accecante Asceta
Messaggi: 23422
Iscrizione: lunedì 29 ottobre 2007, 11:31

Re: Un asteroide: come compilare sorgente di un driver

Messaggio da cristian_c »

Ghingon ha scritto:Ho provato a dare il comando ./configure && make && sudo make install dalla cartella dove risiedono i files del sorgente, ma mi dice "bash: ./configure: Nessun file o directory".
In effetti da quello che mi sembra di capire, dare il comando /configure, prevede che esista uno script configure. Nella cartella non c'è nessun file configure. Dovrei crearlo in qualche modo?
posta il contenuto della cartella che ti hanno inviato ;)
UP! Unreal Project: il futuro inizia qui. Crusade è tra noi
È scienza!
Ghingon
Prode Principiante
Messaggi: 15
Iscrizione: venerdì 1 giugno 2012, 21:12

Re: Un asteroide: come compilare sorgente di un driver

Messaggio da Ghingon »

Ciao Cristian e grazie per l'interesse mostrato,
spero quanto segue sia leggibile, ma se lo è per me che uso il pc come una clava...

Directory di C:\temp\TeacUSBAudio-273.4.2
04/06/2012 09:26 <DIR> .
04/06/2012 09:26 <DIR> ..
28/06/2011 14:53 12,292 .DS_Store
22/10/2010 18:43 1,398 AbsoluteTime_uint64.h
26/01/2010 07:36 12,716 BigNum.cpp
26/01/2010 07:36 2,439 BigNum.h
04/06/2012 09:26 <DIR> English.lproj
28/04/2011 10:25 2,596 Info.plist
31/07/2004 05:28 462 ReadMe
06/10/2010 09:24 782 ReadMe(GFEC TENOR).txt
04/06/2012 09:26 <DIR> TeacUSBAudio.xcodeproj
06/10/2010 09:26 90,049 TeacUSBAudioClip.cpp
06/10/2010 09:25 1,742 TeacUSBAudioClip.h
22/10/2010 18:44 6,929 TeacUSBAudioCommon.h
06/10/2010 09:25 321,009 TeacUSBAudioDevice.cpp
06/10/2010 09:26 23,053 TeacUSBAudioDevice.h
06/10/2010 09:26 238,118 TeacUSBAudioDictionary.cpp
06/10/2010 09:26 80,089 TeacUSBAudioDictionary.h
06/10/2010 09:26 99,375 TeacUSBAudioEngine.cpp
06/10/2010 09:26 10,146 TeacUSBAudioEngine.h
06/10/2010 09:26 4,813 TeacUSBAudioPlugin.cpp
06/10/2010 09:26 3,434 TeacUSBAudioPlugin.h
28/04/2011 08:13 2,066 TeacUSBAudioProjectProperties.h
28/04/2011 08:00 157,439 TeacUSBAudioStream.cpp
06/10/2010 09:26 13,341 TeacUSBAudioStream.h
21 File 1,084,288 byte
4 Directory 128,915,595,264 byte disponibili
C:\temp\TeacUSBAudio-273.4.2>cd english.lproj
C:\temp\TeacUSBAudio-273.4.2\English.lproj>dir
Directory di C:\temp\TeacUSBAudio-273.4.2\English.lproj
04/06/2012 09:26 <DIR> .
04/06/2012 09:26 <DIR> ..
28/09/2010 10:00 152 InfoPlist.strings
1 File 152 byte
2 Directory 128,915,595,264 byte disponibili
C:\temp\TeacUSBAudio-273.4.2\English.lproj>cd..
C:\temp\TeacUSBAudio-273.4.2>cd teacusbaudio.xcodeproj
C:\temp\TeacUSBAudio-273.4.2\TeacUSBAudio.xcodeproj>dir
Directory di C:\temp\TeacUSBAudio-273.4.2\TeacUSBAudio.xcodeproj
04/06/2012 09:26 <DIR> .
04/06/2012 09:26 <DIR> ..
28/06/2011 14:53 39,432 apple.mode1v3
28/06/2011 14:53 10,266 apple.pbxuser
28/06/2011 14:53 30,304 project.pbxproj
3 File 80,002 byte
2 Directory 128,915,595,264 byte disponibili

Pensavo che la richiesta fosse ormai caduta nel vuoto.
Credo di aver capito che la questione sia piuttosto complessa e certamente fuori dalla mia portata.
Se passasse di qui per caso qualche developer... :ciao:
Avatar utente
cristian_c
Accecante Asceta
Accecante Asceta
Messaggi: 23422
Iscrizione: lunedì 29 ottobre 2007, 11:31

Re: Un asteroide: come compilare sorgente di un driver

Messaggio da cristian_c »

Devi compilare con g++ :sisi:
Il modello da seguire è questo:

Codice: Seleziona tutto

g++ -o nome_eseguibile file1.cpp file2.cpp file3.cpp ... filen.cpp
Mi colpisce comunque che non vedo il main.cpp :o
UP! Unreal Project: il futuro inizia qui. Crusade è tra noi
È scienza!
Ghingon
Prode Principiante
Messaggi: 15
Iscrizione: venerdì 1 giugno 2012, 21:12

Re: Un asteroide: come compilare sorgente di un driver

Messaggio da Ghingon »

Grazie Cristian, oggi sono arrivato a casa tardi, proverò il metodo che suggerisci domani, magari cerco qualche documento in rete.
Penso che avrei più possibilità di vincere un terno secco che di riuscire nell'impresa!
Giocherò la mia schedine!
Ghingon
Prode Principiante
Messaggi: 15
Iscrizione: venerdì 1 giugno 2012, 21:12

Re: Un asteroide: come compilare sorgente di un driver

Messaggio da Ghingon »

:(
Ho provato il comando come indicato e con alcune modifiche. La lista degli errori era talmente lunga che ho provato a compilare solo un file.cpp ma nulla. Forse sbaglio, ma mi sono fatto l'idea che il programma sia stato sviluppato con Xcode. Girovagando in rete mi è sembrato di capire che alcuni programmi si riesce a trasportarli modificandoli prima della compilazione e qualche trucco dopo. Forse uno sviluppatore alsa potrebbe giocarci intorno, ma io penso di fermarmi qui. L'idea di usare g++ mi sembrava azzeccata (prima di provare ho letto qualcosa in rete). Il file main non esiste, ma non ho neanche trovato main() in alcuno dei file. Sarà qualche derivato di C++. Spero di non aver detto troppe castronerie.
Grazie comunque a tutti!
Avatar utente
cristian_c
Accecante Asceta
Accecante Asceta
Messaggi: 23422
Iscrizione: lunedì 29 ottobre 2007, 11:31

Re: Un asteroide: come compilare sorgente di un driver

Messaggio da cristian_c »

Prova comunque a postare il comando che hai utilizzato (utilizza il tag 'code') ;)
UP! Unreal Project: il futuro inizia qui. Crusade è tra noi
È scienza!
Ghingon
Prode Principiante
Messaggi: 15
Iscrizione: venerdì 1 giugno 2012, 21:12

Re: Un asteroide: come compilare sorgente di un driver

Messaggio da Ghingon »

Grazie Cristian per la perseveranza, spero che tu sappia bene come "investire" il tuo tempo.
Quello che ho dato è stato quanto mi hai postato....o quasi...

Codice: Seleziona tutto

g++ -o driver BigNum.cpp TeacUSBAudioClip.cpp TeacUSBAudioDevice.cpp TeacUSBAudioDictionary.cpp TeacUSBAudioEngine.cpp TeacUSBAudioPlugin.cpp TeacUSBAudioStream.cpp
Questa lista di files corrisponde a tutti i file.cpp. La quantità di errori era talmente lunga che una parte sono andati fuori dal terminale.

Alcuni errori facevano riferimento a mancate "risorse". Leggendo all'interno dei file dei file apple.mode1v3 apple.pbxuser project.pbxproj ho trovato alcuni riferimenti ed quindi ho riprovato lo stesso comando con tutti i file .cpp ed ho aggiunto gli ultimi tre:

Codice: Seleziona tutto

g++ -o driver BigNum.cpp TeacUSBAudioClip.cpp TeacUSBAudioDevice.cpp TeacUSBAudioDictionary.cpp TeacUSBAudioEngine.cpp TeacUSBAudioPlugin.cpp TeacUSBAudioStream.cpp apple.mode1v3 apple.pbxuser project.pbxproj
Poi ho riprovato con la lista di tutti i file che il sistema mi definisce file c++.
Prima di tutto cio avevo digitato:

Codice: Seleziona tutto

sudo apt-get install build-essential
Non so se fosse indispensabile, ma mi sembrava andato a buon fine, con alcuni messaggi che facevano riferimento all'installazione di g++ versione mi pare 4....

Sto litigando anche con i tag code :cry:
Avatar utente
cristian_c
Accecante Asceta
Accecante Asceta
Messaggi: 23422
Iscrizione: lunedì 29 ottobre 2007, 11:31

Re: Un asteroide: come compilare sorgente di un driver

Messaggio da cristian_c »

Grazie Cristian per la perseveranza, spero che tu sappia bene come "investire" il tuo tempo.
se non valeva la pena, non avrei risposto (è anche un'occasione per imparare) ;)

g++ è un compilatore e quindi funziona soltanto con i file di codice (.cpp) :sisi:

Il problema comunque è che se non mi posti l'output non posso indovinare da dove derivano i problemi. In ogni caso puoi redirezionare l'output su un flle di testo ;)
UP! Unreal Project: il futuro inizia qui. Crusade è tra noi
È scienza!
Ghingon
Prode Principiante
Messaggi: 15
Iscrizione: venerdì 1 giugno 2012, 21:12

Re: Un asteroide: come compilare sorgente di un driver

Messaggio da Ghingon »

Scusate per il ritardo.
Ho avuto modo di far visionare il materiale alieno ad uno sviluppatore che dice: It's written in C++, but it's a driver for Mac OS X, it
doesn't help the Linux community at all.
Mi ha chiesto l'output di alcuni comandi per andarci a fondo:

Codice: Seleziona tutto

lsusb -v

Codice: Seleziona tutto

dmesg
e due giorni dopo mi dice:

...I found this bug... :sisi:
Il giorno dopo ha scritto una patch :o
E adesso vuole il mio aiuto per provarla :lol:
Comicio ad essere ot.
In che sezione si chiede aiuto per provare ad usare una patch tipo questa?

Codice: Seleziona tutto

diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c
index b548cf1..8eb1a1e 100644
--- a/drivers/usb/core/message.c
+++ b/drivers/usb/core/message.c
@@ -1838,7 +1838,6 @@ free_interfaces:
 		intfc = cp->intf_cache[i];
 		intf->altsetting = intfc->altsetting;
 		intf->num_altsetting = intfc->num_altsetting;
-		intf->intf_assoc = find_iad(dev, cp, i);
 		kref_get(&intfc->ref);

 		alt = usb_altnum_to_altsetting(intf, 0);
@@ -1851,6 +1850,9 @@ free_interfaces:
 		if (!alt)
 			alt = &intf->altsetting[0];

+		intf->intf_assoc =
+			find_iad(dev, cp, alt->desc.bInterfaceNumber);
+
 		intf->cur_altsetting = alt;
 		usb_enable_interface(dev, intf, true);
 		intf->dev.parent = &dev->dev;
Grazie a tutti!
Avatar utente
cristian_c
Accecante Asceta
Accecante Asceta
Messaggi: 23422
Iscrizione: lunedì 29 ottobre 2007, 11:31

Re: Un asteroide: come compilare sorgente di un driver

Messaggio da cristian_c »

Scusa, ma avevi comunicato alla Teac che tu utilizzavi ubuntu? :D

Comunque in ubuntu io farei così per patchare:
1) prenderei il contenuto della patch, lo copierei in un editor di testo, e salverei il file con il nome teac.patch
2) mi posizionerei da terminale nella directory che contiene a e b
3) digiterei il comando:

Codice: Seleziona tutto

patch -p0 <teac.patch
UP! Unreal Project: il futuro inizia qui. Crusade è tra noi
È scienza!
Ghingon
Prode Principiante
Messaggi: 15
Iscrizione: venerdì 1 giugno 2012, 21:12

Re: Un asteroide: come compilare sorgente di un driver

Messaggio da Ghingon »

Ciao Cristian, ;)

ovviamente sono passato prima da Teac e mi ha detto...no Apple...no parti; ed infatti sono ancora piantato :devilmad:
Scherzi a parte l'autore della patch mi ha inviato il link della guida che dovrei seguire:
https://wiki.ubuntu.com/KernelTeam/GitKernelBuild
Aggingendo sibillinamente:

But I warn you, it's very nerdy after all :)

Between step 6 and 7 of this document, you would patch the sources using
the "git apply" command and the patch I posted to the ALSA list.

Non ho la minima idea della differenza tra quello che mi indichi tu Cristian e la guida del link.
Tuttavia visto che ho chiesto un aiuto, se mi chiede di fare da cavia seguendo la guida, mi sento in dovere di farlo.
Peccato perchè la tua, per evidenti ragioni di semplicità, mi era più simpatica. :lol:
Da quello che ho capito, se la modifica funziona dovrebbe diventare ufficiale.
Sono già arrivato alla fine del punto 5 senza apparenti errori.
Per il 6 e 7 complicato dal "git command" accetto aiuti da casa e dal pubblico.
Comunque non mi aspettavo questo supporto, anzi accoglienza dal mondo Linux.
Grazie,
A presto!
Avatar utente
cristian_c
Accecante Asceta
Accecante Asceta
Messaggi: 23422
Iscrizione: lunedì 29 ottobre 2007, 11:31

Re: Un asteroide: come compilare sorgente di un driver

Messaggio da cristian_c »

Credo di aver trovato qualcosa riguardo quello che ti ha chiesto lo sviluppatore che ha creato la patch: http://ariejan.net/2009/10/26/how-to-cr ... h-with-git :)
Vedi il paragrafo 'Applying the patch' ;)
(ovviamente sostituendo il nome giusto alla patch che non si chiama fix_empty_poster :nono: )
UP! Unreal Project: il futuro inizia qui. Crusade è tra noi
È scienza!
Scrivi risposta

Ritorna a “Driver e periferiche”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 19 ospiti