La procedura è abbastanza facile anche se alcuni automatismi di sistema possono rendere le cose più complicate (vedi modem-manager).
Ecco la procedura:
1- inserimento della chiavetta
viene riconosciuta come un cosiddetto "ZeroCD" /dev/sr0 e da lsusb si ottiengono i seguenti vendor e product ids: 2020:0002
2- faciamo finta di espellere il cd con eject.
Codice: Seleziona tutto
eject /dev/sr0
3- A questo punto diamo questi nuovi ID in pasto ad usbserial:
Codice: Seleziona tutto
modprobe usbserial vendor=0x2020 product=0x4000
Su cui si può impostare la connessione dialup per esempio con pppd e chat, o wvdial o altro.
Benissimo!
Si può fare tutto a mano ma sarebbe preferibile automatizzare la procedura in modo che:
- Attacco la chiavetta e zac! Mi ritrovo il modem utilizzabile per esempio su /dev/ttyUSB0.
Per il momento ho fatto uno script, che automatizza semplicemente le operazioni da fare a mano:
- attacco la chiavetta
- lancio lo script
- ho il modem
Poi ho provato ad scriverere una regola udev:
Codice: Seleziona tutto
/etc/udev/rules.d/00-olicard_300.rules
1- inserisco la chiavetta a sistema avviato, a caldo insomma
2- faccio il reboot del sistema (nel fare il reboot la chiavetta resta alimentata e non perde l'impostazione "modalità modem"
Non funziona se:
- Attacco la chiavetta e accendo il computer.
In questo caso la chiavetta viene inizialmente riconosciuta come CD e forse udev fa partire il mio script troppo presto fatto sta che alla fine del boot il device /dev/sr0 è ancora presente e lsusb dice ancora 2020:4000 cioè Zero-CD.
Ho il sospetto che sia un problema di tempistiche perchè a sistema avviato e con la chiavetta ancora vista come zero-cd, se dò:
Codice: Seleziona tutto
udevadm trigger
Vi dovrei postare lo script e la regola udev. Le recupero sul netbook che ospita la chiavetta.
Codice: Seleziona tutto
#!/bin/sh
LOG=/tmp/olicard-300.log
LOCK=/var/lock/olicard.lk
modeswitch()
{
echo "$(date +%m%d-%H.%M.%S): Switching Olicard 300 from ZeroCD to 3G Modem" > $LOG
echo "$(date +%m%d-%H.%M.%S) Step 1: eject SR0 device" >> $LOG
echo '' >> $LOG
touch $LOCK
while [ ! -e /dev/sr0 ]; do
echo "$(date +%m%d-%H.%M.%S) waiting for ZeroCD /dev/sr0"
sleep 1
done
/usr/bin/eject /dev/sr0
rm $LOCK
}
modemup()
{
while [ -e $LOCK ]
do
sleep 1
done
echo "$(date +%m%d-%H.%M.%S) Step 2: creating modem device /dev/ttyUSB*" >> $LOG
/sbin/modprobe usbserial vendor=0x2020 product=0x4000
echo '---------------' >> $LOG
}
case $1 in
modeswitch)
sleep 2
modeswitch
;;
modemup)
sleep 2
modemup
;;
*)
echo "Nothing to do! Bye..."
;;
esac
Codice: Seleziona tutto
# All'inserimento della chiavetta espelli lo "ZeroCD"
#
ACTION=="add|change", SUBSYSTEM=="usb", ATTRS{idVendor}=="2020", ATTRS{idProduct}=="0002", RUN+="/usr/local/bin/olicard_300.sh modeswitch"
# Adesso lo switch sulla chiavetta e' effettuato e dovrebbe apparire come 2020:4000 da lsusb
# A questo punto basta caricare il modulo usbserial prendendo in consegna il device specifico
#
ACTION=="add|change", SUBSYSTEM=="usb", ATTRS{idVendor}=="2020", ATTRS{idProduct}=="4000", RUN+="/usr/local/bin/olicard_300.sh modemup"
Se avete qualche idea per capire cosa succede...
Non fate caso allo script raffazzonato ecc... sicuramente è una configurazione piuttosto provvisoria e fatta a tentoni e un po' di fretta.