Newsgroup: it.comp.os.linux.iniziare
Titolo: Se collego piu' cellulari su porta USB,vengono visti sempre nelle stesse posizioni?

Se collego 3 cellulari nokia alle porte USB di un PC con linux e non li 
smuovo piu' dalle loro prese,
ogni volta che resetto linux li vede sempre nello stesso ordine, o mischia 
tutto?
ad esempio:
nokia n.1 su /dev/ttyUSB0
nokia n.2 su /dev/ttyUSB1
nokia n.3 su /dev/ttyUSB2
Il mio problema e' che devo ricevere molti sms su piu' SIM, e implementarle 
con un software via PC. Per gestire il nokia, userei qualche software linux  
da linea di comando.
Preferirei usare la porta Seriale, ma visto che ho una sola porta seriale e 
che da 3 le SIM potrebbero aumentare pensavo di usare le USB.
Ovviamente in base alla porta da usare comprerei i cellulari usati con cavo 
dati indicato. E penso che si trovino piu' facilmente nokia usati con cavo 
dati USB di serie e non con cavo seriale.
Grazie 


Devi fare delle regole per udev perché ti assegni la stessa periferica 
sempre allo stesso link
Udev è molto ben documentato, l'unico dubbio è se udev permetta di 
distinguere fra più apparecchi identici con certezza, non ho mai provato
M
-- 
I fatti mi cosano



ma quindi udev distingue in base al dispositivo e non in base alla 
posizione, ovvero a quale presa USB sto usando?

 
prova a postare lsusb quando hai collegato i 3 cell
-- 
Archlinux on (uname -a)
F


Ha delle regole che si basano su vari parametri, fra cui VENDOR_ID e 
PRODUCT_ID tipo 1d6b:0001
Il problema che potresti avere è che se hai tre device identici non so 
dirti come forzare che la porta 1 sia segnata come 1 sempre
Di fatto gli script vengono sempre eseguiti grossomodo alla stessa 
maniera, quindi i numeri non dovrebbero cambiare, ma vivere con i 
condizionali non è bello in informatica
Il tuo problema coi dischi è stato risolto tramite l'UUID
athlonno marco # ls -la /dev/disk/by-uuid/
lrwxrwxrwx 1 root root  10 18 giu 17.20 
11b780f5-82d7-44c6-8a45-0ae0de8302f9 -> ../../sda2
Qui però non ti so essere più d'aiuto


 
eh eh, io non ho ancora i cellulari!
Ho chiesto prima qui, perche' sono indeciso quali cellulari comprare.
O meglio, vorrei comprare quelli USB, cosi' ne posso collegare un  bel po' 
rispetto alla seriale. Ma a quanto sembra i miei dubbi si sono rilevati 
fondati.
L'alternativa sarebbe comprare una scheda PCI multiseriale, ma a parte il 
costo e l'eventuale supporto sotto linux, non e' una soluzione che mi piace.
Stavo pensando al discorso dell'UUDD degli HD di cui parlava Marco e  mi e' 
venuta un'idea.
potrei sfruttare l'IMEI o il numero della SIM dei singoli cellulari per 
identificarli, e far partire uno script all'avvio del PC che mi crei i 
giusti alias. Mi spiego:
ho i device reali:
nokia n.1 su /dev/ttyUSB0
nokia n.2 su /dev/ttyUSB1
nokia n.3 su /dev/ttyUSB2
che ad ogni avvio potrebbero mischiarsi casualmente.
Lo script all'avvio di linux controllorebbe per ogni device l'IMEI o la SIM 
e gli assegnerebbe un alias tipi dev/nokia1 ...ecc.
cosi avrei sempre:
nokia n.1 su /dev/nokia1
nokia n.2 su /dev/nokia2
nokia n.3 su /dev/nokia3
e poi ovviamente il software e i comandi che andrei ad usare successivamente 
faranno riferimento agli alias.
Che ne dite?

 Che ne dite?
Allora direi che dovresti prendere 3 cellulari/modem GSM uguali, scrivere 
un demonietto (si può fare agilmente anche in python) che o via dbus o 
via fam controlla la connessione dei cellulari (mi sembra, comunque, che 
i device creati siano /dev/ttyACMx e non /dev/ttyUSBx, ma dipende tutto 
dalla configurazione di udev), e appena questi vengono connessi esegue 
prima una interrogazione dell'IMEI e in base a questo decide se e quale 
demone lanciare per la ricezione/invio degli SMS.
Sempre via dbus o via fam (sono le prime modalità che mi vengono in 
mente) controlla se i cellulari vengono disconnessi e ferma i demoni 
precedentemente lanciati su quei dispositivi.
Codesto supervisore può anche operare un controllo di presenza in vita 
dei demoni che operano la ricezione/invio degli SMS. Se uno di questi 
dovesse decedere prematuramente (ad esempio un errore che lo manda in 
segfault), potrebbe decidere di rilanciarlo automaticamente.
E non occorrerebbe nemmeno creare gli "alias" /dev/nokia1 
Devi comunque fare un po' di lavoro (scrivere il demone, interfacciarti a 
dbus o a fam, implementare un minimo di protocollo AT verso i telefoni 
per farti dire il codice IMEI, lanciare i demoni che gestiscono gli SMS, 
monitorarli e/o ucciderli alla bisogna)
Non mi ricordo se da protocollo AT puoi richiedere il codice della SIM o 
il numero di telefono ad essa associato.
PSK

 soluzione che mi piace.
Se vuoi una multiseriale pci con supporto linux ce l'ho io... se
ricordo bene � una 16 porte espandibile, serviva proprio a gestire
una decina di cellulari gsm.
La pagammo 1,5 megalire :-)
-- 
ValeRyo
XT600 "Katoki Pajama" - 
http://www.slimmit.com/go.asp?7Y9
GamerTag: 
http://card.mygamercard.net/IT/nxe/ValeRyo76.png
 

 software linux da linea di comando.
  Una soluzione alternativa potrebbe essere l'uso del bluetooth: hai i 
device identificati per nome (e comunque anche per mac address) e lï¿œ 
l'associazione la fai te.
-- 
Non pretendo che comprendiate il significato di quello che ho scritto senza 
averlo riletto un certo numero di volte. Personalmente, vi riterrei degli 
stupidi se lo faceste. Io l'ho letto sei volte ed ancora non l'ho capito.

 posizione, ovvero a quale presa USB sto usando?
Si. Questo, ad esempio, e` quello che udev vede al momento in cui aggancio 
il mio Nokia:
[enrico@whiterabbit ~]$  udevadm info -a -p  $(udevadm info -q path -n 
/dev/ttyACM0 )
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
  looking at device 
'/devices/pci0000:00/0000:00:1d.7/usb1/1-6/1-6:1.1/tty/ttyACM0':
    KERNEL=="ttyACM0"
    SUBSYSTEM=="tty"
    DRIVER==""
  looking at parent device 
'/devices/pci0000:00/0000:00:1d.7/usb1/1-6/1-6:1.1':
    KERNELS=="1-6:1.1"
    SUBSYSTEMS=="usb"
    DRIVERS=="cdc_acm"
    ATTRS{bInterfaceNumber}=="01"
    ATTRS{bAlternateSetting}==" 0"
    ATTRS{bNumEndpoints}=="01"
    ATTRS{bInterfaceClass}=="02"
    ATTRS{bInterfaceSubClass}=="02"
    ATTRS{bInterfaceProtocol}=="01"
    ATTRS{supports_autosuspend}=="1"
    ATTRS{interface}=="CDC Comms Interface"
    ATTRS{bmCapabilities}=="15"
  looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1/1-6':
    KERNELS=="1-6"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}=="Bulk transfer method configuration"
    ATTRS{bNumInterfaces}=="14"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="80"
    ATTRS{bMaxPower}=="100mA"
    ATTRS{urbnum}=="2225"
    ATTRS{idVendor}=="0421"
    ATTRS{idProduct}=="0154"
    ATTRS{bcdDevice}=="0100"
    ATTRS{bDeviceClass}=="02"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="480"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="7"
    ATTRS{devpath}=="6"
    ATTRS{version}==" 2.00"
    ATTRS{maxchild}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="Nokia"
    ATTRS{product}=="Nokia 5800 XpressMusic"
    ATTRS{serial}=="359339037951711"
  looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1':
    KERNELS=="usb1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{configuration}==""
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bMaxPower}=="  0mA"
    ATTRS{urbnum}=="165"
    ATTRS{idVendor}=="1d6b"
    ATTRS{idProduct}=="0002"
    ATTRS{bcdDevice}=="0206"
    ATTRS{bDeviceClass}=="09"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{speed}=="480"
    ATTRS{busnum}=="1"
    ATTRS{devnum}=="1"
    ATTRS{devpath}=="0"
    ATTRS{version}==" 2.00"
    ATTRS{maxchild}=="8"
    ATTRS{quirks}=="0x0"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{authorized}=="1"
    ATTRS{manufacturer}=="Linux 2.6.38.8-32.fc15.x86_64 ehci_hcd"
    ATTRS{product}=="EHCI Host Controller"
    ATTRS{serial}=="0000:00:1d.7"
    ATTRS{authorized_default}=="1"
  looking at parent device '/devices/pci0000:00/0000:00:1d.7':
    KERNELS=="0000:00:1d.7"
    SUBSYSTEMS=="pci"
    DRIVERS=="ehci_hcd"
    ATTRS{vendor}=="0x8086"
    ATTRS{device}=="0x27cc"
    ATTRS{subsystem_vendor}=="0x1043"
    ATTRS{subsystem_device}=="0x8179"
    ATTRS{class}=="0x0c0320"
    ATTRS{irq}=="23"
    ATTRS{local_cpus}=="00000000,00000000,00000000,00000000,00000000,00000000,00000000,0000000f"
    ATTRS{local_cpulist}=="0-3"
    ATTRS{numa_node}=="-1"
    ATTRS{dma_mask_bits}=="32"
    ATTRS{consistent_dma_mask_bits}=="32"
    ATTRS{broken_parity_status}=="0"
    ATTRS{msi_bus}==""
    ATTRS{companion}==""
  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""
[enrico@whiterabbit ~]$ 
Una regola udev potrebbe essere del tipo:
ATTRS{idVendor}=="0421", ATTRS{idProduct}=="0154", SYMLINK+="Nokia5800"
Tutto questo mi creera` in /dev un symlink di nome Nokia5800, a cui io 
potro` accedere come voglio
Enrico

 Enrico
Eh, ma con quella regola come fai a distinguere fra (mettiamo) 5 
telefoni identici?
Finché il symlink è uno siamo d'accordo che funziona
Effettivamente la cosa inizia ad incuriosirmi
A naso credo anch'io che l'approccio del demone che tramite comandi AT 
si va a prendere l'imei sia la cosa più rapida, però sarebbe 
interessante capire se udev è capace di farlo


 interessante capire se udev è capace di farlo
Dipende da cosa ti espone l'hardware, sicuramente un identificativo univoco 
lo trovi, altrimenti il produttore avrebbe non poche rogne :)
Enrico

 interessante capire se udev è capace di farlo
No, udev è una roba standard e fatta bene, basta una piccola modifica sui 
files di configurazione. Niente script aggiuntivi da gestire.
Nicola. 
-- 
chi va pian va san e va lontan

 
Azz. questa e' un'ottima idea. Ma dovrei comprare un adattatore bluetooh USB  
per ogni cellulare o con uno solo li gestisco tutti? Potrei passare ad 
accedere da uno all'altro cellulare velocemente, o ogni volta dovrei 
associare il cell? Non mi fido molto delle soluzioni senza filo..che dite?
Un'adattatore bluetooth dovrei averlo nel cassetto...

 
E' una battuta o fai sul serio?
Che modello e'? L'hai pagata 1500 lire?

 Che modello e'? L'hai pagata 1500 lire?
Mega, non Kappa... La pagammo un milione e mezzo, � una
PCI, con un cavo si collega ad una dock da 16 porte e questa
dock a sua volta si pu� collegare ad altre dock, per un totale
di 128 porte.
Ora non ricordo il modello, ma la prendemmo perch� era
perfettamente supportata. Gestiva una decina di 5110/6110
con gnokii/smsd.
Se ti interessa la posso dar via per poco, sta solo ad
occupare spazio in magazzino.
(e, se interessassero ad altri, abbiamo degli ottimi modem
digicom analogici su ISDN per ricevere chiamate in ingresso
a 56k...)



Ah beh, se c'è ATTRS{serial} direi che la cosa è risolta.
Adesso però ho una domanda io:
dal man di udev
        ATTR{filename}
            Match sysfs attribute values of the event device. Trailing 
whitespace in the attribute values is ignored, if the specified match 
value does not contain trailing whitespace itself.
filename da dove me lo dovrei inventare?
Ossia, come faccio a sapere che esiste un serial piuttosto che un 
product o qualcosa d'altro?
Ho letto man sysfs ma mi pare riguardi tutt'altro o forse non capisco io 
come si collega a questo




Ti fai un file tipo:
/etc/udev/rules.d/80-cellulari.rules
Ci metti dentro:
SUBSYSTEM=="usb", ATTRS{serial}=="359339037951711", GROUP="dialout", 
SYMLINK+="cellpippo"
Cosi' potrebbe andare.


 l'IMEI :/
Bah, dici che qualcuno riesca ad hackerarti il telefono con l'IMEI? Uh, 
forse una cosa si può fare ma evito di dirla qua che magari qualcuno ci 
prova.


 occupare spazio in magazzino.
penso che il tuo poco sara' sempre molto per me.
Penso di cercare di usare la soluzione USB  o bluetooth, anche perche' cosi' 
i telefonini che andrei ad usare sarebbero piu' recenti e quindi migliori e 
con meno probabilita' di difetti o rotture per un'uso 24h/24h.
E poi se proprio dovessi usare la porta seriale penso che potrei risparmiare 
comprando vari adattatori USB/Seriale da 5 euro l'uno. Anche se penso che 
cosi' mi rimarrebbe sempre il problema dell'ordine dei dispositivi per colpa 
dell' USB.
Grazie comunque della proposta.


 dei dispositivi per colpa dell' USB.
Avranno un seriale, mi auguro...


 Avranno un seriale, mi auguro...
Qualcuno non ha letto il resto del Thread...
:)


 Qualcuno non ha letto il resto del Thread...
Mi sa che m'� sfuggito il messaggio in cui si evidenziava il
modo per distinguere dei convertitori usb-seriale :-)
