PDA

Visualizza versione completa : Ma le porte seriali/com virtuali esistono su linux?



Andy86
22-08-11, 17: 23
:bai

Come da titolo, volevo avviare una connessione seriale/bluetooth del cellulare su porta com: non sapendo come fare a visualizzare o configurare tali porte, ho cercato su google e non ho trovato praticamente nulla!!!! :cry3

Possibile che la possibilità di associare una porta com ad un dispositivo bluetooth/usb sia propria di windows?? :confused:

Da blueman, "dispostivo -> porte seriali" riesco a vedere che è disponibile il servizio data transfer, ma non a farlo partire:
"impossibile avviare la connessione seriale, il plug-in potrebbe non essere installato". :boh

Illuminatemi, grazie. :thx

pierino_89
22-08-11, 17: 43
Onestamente col bluetooth non lo so, però generalmente le seriali sono tutte le /dev/ttyS0,1,2,3,... se native, /dev/ttyUSB0,1,2,3... se con l'adattatore usb.
Se non ricordo male la connessione seriale via bt avviene via /dev/rfcomm, ma dai una controllata.

Andy86
22-08-11, 19: 19
:bai

E... non c'è un comando tipo "fdisk -l" per vederle tutte e farsi un idea?
Avrei bisogno una porta con un nome (tipo comX) da passare ai metodi di rxtx (librea java) per poterle gestire. :sisi

Comunque ho provato rfcomm:


Only registered members can view code.

:boh

pierino_89
23-08-11, 02: 01
non credo, in generale i nomi sono standard, un comando di quel tipo sarebbe abbastanza futile (le integrate sono ttyS*, le usb sono ttyUSB*).
controlla che /dev/rfcomm sia presente. Se non c'è, carica il modulo omonimo.

Andy86
23-08-11, 20: 04
:bai

Ho dato "sudo modprobe rfcomm", poi ho controllato "modprobe -l", c'è caricato questo:


Only registered members can view code.

Però la cartella che dici ancora non è presente... :boh

C'è "rfkill", ma mi sa che non c'entra... :lol:

pierino_89
23-08-11, 20: 25
modprobe -l dice tutti i moduli esistenti, i moduli caricati li vedi con lsmod :eye
Comunque se hai caricato il modulo, teoricamente il device file dovrebbe essere presente. Occhio che potrebbe chiamarsi /dev/rfcomm0 o in maniere simili.

[edit]
rfkill serve per spegnere wifi e bluetooth con i bottoncini funzione :tong2

Andy86
24-08-11, 22: 50
:bai

Il modulo è caricato, ma in /dev non appare nulla di attinente:


Only registered members can view code.

Andy86
28-08-11, 21: 17
:bai

Ho trovato il comando per creare rfcomm0:


Only registered members can view code. XX = macAddres cellulare.

Tra l'altro era pure nell'help di rfcomm, non so come ho fatto a non capirlo da solo... :ehmm :boh

Ora comunque "rfcomm connect" funziona senza errori, solo che quando cerco di connettere la console python del symbian mi viene detto:
"nessuna porta com trovata". :boh

Sarò di fronte ad un altra cavolo di incompatibilità? :boh

pierino_89
29-08-11, 00: 07
adesso /dev/rfcomm0 c'è?
controlla anche il comando hciconfig, anche se non mi sembra c'entri con la seriale.

Andy86
29-08-11, 18: 13
:bai

rfcomm0 c'è ogni volta che la ricreo, ovvero non viene creata all'avvio. :sisi


hciconfig:


Only registered members can view code.

pierino_89
29-08-11, 21: 05
Beh, sì, dovresti fare una regola di udev. Hai modo di provare se il cellulare riceve qualcosa dalla seriale? Una roba tipo minicom o hyper terminal, diciamo.

Andy86
29-08-11, 21: 26
:bai

Sul cellulare ho il python 1.9.7 che ha la console bluetooth, che riceve appunto quello che il pc scrive sulla seriale, ed eventualmente può rispondere tramite la stessa.
Ad esempio scrivendo "print "ciao"" il programma risponde 'ciao'.

Il problema però è a monte. Quando detto programma si connette al pc, mi dice "no serial port found". :boh

Ovvero, il programma cerca una porta seriale sul pc, per potercisi connettere, ma non ne trova... se poi se le aspetta coi nomi windows non lo so...

pierino_89
30-08-11, 00: 58
hai presente come si usa hyper terminal?
prova a vedere con minicom se reagisce.

Andy86
02-09-11, 20: 30
:bai

No. :ehmm

Queste prove su win le feci con uno strumento di telnet di cui non ricordo il nome... non so se il funzionamento è simile.

L'unica cosa che non ho capito è cosa devo usare su symbian per mandare segnali al pc... :m:

Comunque ho fatto un po' di prove con rfcomm e riesco a generare una connessione aperta con questa sequenza di comandi:


Only registered members can view code.

Ma la console bluetooth del python for symbian non vede alcuna porta com.

Ho provato anche a mettere /dev/com0 ma non funziona, mi dice sempre "Connected /dev/rfcomm0 to E0:A6:70:01:88:59 on channel 1
Press CTRL-C for hangup". :boh

Per quanto riguarda minicom invece c'è questo errore:


Only registered members can view code.

rfcomm però è presente e parte anche la richiesta di codice da parte di symbian, però, prima che possa rispondere dal pc con lo stesso codice, si sconnette con lo stesso errore. Ho provato a essere veloce, ma pare si sconnetta contemporaneamente alla comparsa della textbox. :boh

pierino_89
02-09-11, 20: 47
fai ls -l /dev/rfcomm*

comunque la sequenza sicuramente è scorretta, bind e release si annullano reciprocamente. Prova con bind e basta, poi apri minicom. Inoltre magari imposta ad entrambi il device come autorizzato, almeno non devi fare il pairing ogni volta.

PS: /dev/com0 te lo sei inventato di sana pianta :tong2

Andy86
02-09-11, 21: 01
:bai


fai ls -l /dev/rfcomm*

Risultato quasi scontato:


Only registered members can view code.




bind e release si annullano reciprocamente

Lo avevo capito. :tong2
Il problema è che se do bind (riserva) e poi connect, connect mi dice che rfcomm0 è riservata (ovviamente), mentre se do solo connect mi dice che rfcomm0 non c'è. :boh



Inoltre magari imposta ad entrambi il device come autorizzato, almeno non devi fare il pairing ogni volta.

Ne avevamo già parlato in altra discussione, non funziona. Il pairing c'è, ma il codice lo chiede comunque. Mi dicesti che è un incompatibilità di symbian. :sisi



/dev/com0 te lo sei inventato di sana pianta :tong2

:ehmm... mi sembrava che rfcomm bind creasse il device indicato... così ho voluto provare con il nome win (nel caso il python for symbian volesse quello)... :lol:



Prova con bind e basta, poi apri minicom.

Già provato prima, anche perché se apro minicom senza dare bind, mi dice che rfcomm0 non esiste. (tanto per cambiare... :tap)
Il risultato è l'errore di cui sopra.

pierino_89
02-09-11, 21: 13
ma se tipo dai bind ma poi avvii la connessione dal cellulare?
domanda da 100 punti, ma stai facendo tutto come root?
il programmino tuo sicuramente non può funzionare se non sei nel gruppo dialout.

[edit]
ho provato così alla grezza, sembra che il telefono capisca che si sta attaccando una console seriale e tiri giù di sua iniziativa la connessione.
per fregarlo, fai echo 1 > /dev/rfcomm0 prima di aprire minicom.

Andy86
02-09-11, 21: 37
ma se tipo dai bind ma poi avvii la connessione dal cellulare?


L'unica cosa che posso fare dal cellulare è provare a connettere la console bluetooth del python, che in pratica cerca una seriale da cui ricevere le istruzioni. :sisi



domanda da 100 punti, ma stai facendo tutto come root?

:ehmm: no. Vado a tentativi, e quando ho il problema dei permessi rifaccio con sudo. :bbg2

Dovrei?



il programmino tuo sicuramente non può funzionare se non sei nel gruppo dialout.

Di che programmino parli? :m:



[edit]

Provato, fatto l'inserimento del codice il più veloce possibile, ma ora rifiuta tutte le connessioni... :boh


Only registered members can view code.

pierino_89
02-09-11, 21: 47
Evidentemente si è arrabbiato :tong2
comunque, stavo pensando: c'era un comando per esplorare i servizi offerti da un device, forse sotto hcitool. È plausibile che la porta seriale non venga offerta sul canale 1, quindi magari cambiando il canale andrebbe a posto.

Andy86
02-09-11, 22: 55
:bai

Ho trovato solo questo:


andre@lepre:~$ sudo hcitool info E0:A6:70:01:88:59 info
Requesting information ...
BD Address: E0:A6:70:01:88:59
Device Name: Nokia 5230
LMP Version: 2.1 (0x4) LMP Subversion: 0x410b
Manufacturer: Broadcom Corporation (15)
Features: 0xbf 0xee 0x0f 0xce 0x98 0x39 0x00 0x00
<3-slot packets> <5-slot packets> <encryption> <slot offset>
<timing accuracy> <role switch> <sniff mode> <RSSI>
<channel quality> <SCO link> <HV3 packets> <u-law log>
<A-law log> <CVSD> <paging scheme> <power control>
<transparent SCO> <EDR ACL 2 Mbps> <EDR ACL 3 Mbps>
<enhanced iscan> <inquiry with RSSI> <extended SCO>
<AFH cap. slave> <AFH class. slave> <3-slot EDR ACL>
<5-slot EDR ACL> <AFH cap. master> <AFH class. master>
<EDR eSCO 2 Mbps>


Comunque dalla gui vedo che supporta il seriale, però in entrata non è mai andato neanche da windows... :boh



È plausibile che la porta seriale non venga offerta sul canale 1, quindi magari cambiando il canale andrebbe a posto.

Il fatto è che però è il telefono a non vedere le seriali del pc, non viceversa... comunque ho provato col canale 2, non cambia niente. :boh

ps: comunque nel gruppo dialout ci sono... :tong2

----------------------------------------------------------------------------------------------------------

Edit:

Ho trovato una guida interessante -> http://linux-junky.blogspot.com/2010/03/setting-up-pys60-bluetooth-console.html

Per fare la connessione in entrata nel pc da rfcomm non devo usare "connect" ma "listen", ovvero ascoltare ciò che viene scritto, mentre per far vedere le porte com al python devo registrare un servizio sul canale che ascolterò.

Però, tanto per cambiare, mi viene negato il permesso... :tap


Only registered members can view code.

Gli altri comandi della guida non ho ben capito come e in che ordine usarli, e non mi hanno sortito effetti... :m:


----------------------------------------------------------------------------------------------------------

Ri-Edit:

Evidentemente il sonno comincia a farsi sentire... bastava avviare rfcomm listen con sudo. :gogo

Una volta attivo il listen e la console bluetooth, apro un altro terminale, lancio "screen /dev/rfcomm1" e posso comunicare correttamente con la console bluetooth.
Ora rimane da vedere se funzionerà anche con gli RXTX, un'altra volta però... :notte:

pierino_89
02-09-11, 23: 17
Beh, teoricamente non è un protocollo client-server :eye quindi non ha molto senso parlare di entrata e uscita (tra parentesi, non è neanche un protocollo).
I canali sono una ventina, quindi provandoli a casaccio non penso che riusciremmo a combinare qualcosa :tong2 se stanotte mi sogno il comando per listare i servizi, te lo scrivo.

Andy86
02-09-11, 23: 50
:thx, ma forse non hai visto l'edit precedente... :lol:

:notte:

pierino_89
03-09-11, 00: 30
oh, decisamente un passo avanti! :oo2
io di seriale in sé ci capisco ben poco, mi hanno fatto impazzire qualche mese fa con baudrate, flow control e cose varie, ma se hai bisogno posso chiedere ad un omino di mia conoscenza.

P.S.: credo che minicom sia meglio di screen, è più specifico per le console seriali, screen generalmente si usa per avere una sessione di terminale che non muoia al logout.

Andy86
03-09-11, 14: 39
:bai

Ok. Intanto ho provato con RXTX, ha funzionato la prima volta, poi si è bloccato, e adesso passa in auto da clean a closed, senza più essere trovata. :boh

Eliminato /var/tmp/LCK..rfcomm, si ricrea. :boh

Ho riavviato tutto, ma non ho concluso nulla. E come se non bastasse il telefono rifiuta anche l'accesso in obex, non chiede più il codice. :boh

Ora comunque non ho più voglia di far prove, quindi ci ripenserò. :sisi