Mobile Linux

Stefano Sanna

gerdavax AT tiscali.it

Mobile Linux

Obiettivo: illustrare le modalità di connessione alla rete cellulare

Agenda:

Mobile Linux? Mobile Linux!

Connessioni remote...

Interfacce: seriali, USB, Bluetooth

Connettività: GSM, GPRS, UMTS

Domande

Bibliografia

Mobile Linux

Chi utilizza Linux fuori dall'ufficio/casa ha numerose esigenze di connessione tra dispositivi, reti e applicazioni

Gli strumenti a disposizione permettono una notevole flessibilità di utilizzo del sistema operativo, anche in condizioni “estreme”

Purtroppo persiste l'indifferenza di molti produttori al supporto per Linux...

Mobile Linux: quali dispositivi?

L'uso “mobile” comprende l'uso di dispositivi quali:

Access Point Wireless LAN

Telefoni cellulari (GSM, GPRS, EDGE, UMTS)

Palmari

GPS

Pen drive (mass storage)

...

Accesso alla rete cellulare

Dove non sono disponibili reti locali wireless, è necessario utilizzare una connessione alla rete cellulare per essere online! :-)

Per l'accesso occorre:

Un terminale abilitato (il telefono)

Una sottoscrizione alla rete (la SIM)

Un sistema configurato opportunamente (il PC)

Configurazione del PC

La configurazione del PC consiste in:

Abilitazione e configurazione delle interfacce fisiche di comunicazione tra PC e terminale

Configurazione dei parametri software per l'inizializzazione del modem e dello stack TCP/IP su linea seriale attraverso PPP

In questa presentazione non sono trattate le installazioni dei driver seriali, USB e Bluetooth, per i quali si rimanda alla documentazione ufficiale

Interfacce

I moderni PC dispongono di molte interfacce di comunicazione:

Seriali

Parallele

PCMCIA

USB

Firewire

IrDA

Bluetooth

Wifi

Interfacce

L'uso di interfacce seriali/USB/Bluetooth permette di utilizzare il medesimo hardware su desktop e portatili (e, talvolta, anche su PDA), mentre l'uso di PCMCIA o Firewire può richiedere l'installazione di adattatori aggiuntivi

Alcuni dispositivi hanno requisiti di performance e alimentazione di cui occorre tenere presente (specie su bus USB)

Interfacce

Nella maggioranza dei casi il problema di connessione si riconduce alla creazione di un device di tipo seriale, reale o in emulazione, wired o wireless

La configurazione dei parametri del modem è indipendente dal tipo di connessione (seriale, USB...) utilizzata ma dipende dal terminale e dal gestore di accesso

Interfacce

Serial

USB

IrDA

Bluetooth

Serial Interface

PPP (interfaccia di rete)

USB-Serial

IrComm

RFComm

Porte seriali

E' una interfaccia economica, universalmente supportata!!!

Compatibili con lo standard RS232, sono state l'interfaccia universale sino agli anni '90...

Sono già state eliminate da tempo dai portatili e stanno iniziando a sparire anche dai desktop (spesso sono disponibili attraverso daughter-board opzionali)...

Driver seriali

Il file /proc/tty/drivers informa sui driver attivi sul sistema:

/dev/tty /dev/tty 5 0 system:/dev/tty

/dev/console /dev/console 5 1 system:console

/dev/ptmx /dev/ptmx 5 2 system

/dev/vc/0 /dev/vc/0 4 0 system:vtmaster

usbserial /dev/ttyUSB 188 0-254 serial

serial /dev/ttyS 4 64-71 serial

pty_slave /dev/pts 136 0-1023 pty:slave

pty_master /dev/ptm 128 0-1023 pty:master

pty_slave /dev/ttyp 3 0-255 pty:slave

pty_master /dev/pty 2 0-255 pty:master

unknown /dev/tty 4 1-63 console

Universal Serial Bus

E' un interfaccia con protocollo di comunicazione master/slave per l'interfacciamento di dispositivi periferici

Permette di connettere sino a 127 dispositivi, con una velocità massima di 12Mbps

Oltre alla trasmissione dati, può alimentare dispositivi a basso assorbimento

La specifica 2.0 (1999) prevede un sensibile aumento di velocità: 480Mbps

Dispositivi USB

Il bus USB permette di connettere dispositivi di diverso tipo: scanner, stampanti, unità di memorizzazione, fotocamere digitali, telefoni cellulari, webcam, mouse e tastiere...

Ogni dispositivo richiede un opportuno driver... :-(

Ovviamente... nei CD che accompagnano i prodotti non hanno i driver per Linux ma...

Adattatori USB-Serial

USB... è seriale, dunque perché non sfruttare i numerosi software e dispositivi seriali (RS-232)? ;-)

Gli adattatori Serial-USB
sono generalmente
riconosciuti
automaticamente dal
kernel e sono creati i device /dev/ttyUSBn

Il resto della configurazione è pressoché analoga alla gestione di una seriale “reale”

USB-Serial mascherati

Può accadere che un dispositivo sia effettivamente un adattatore USB-Serial ma il suo device ID non è riconosciuto dallo stack USB del sistema operativo

Occorre fare un po' di analisi sull'interfaccia software esportata:

il file /proc/bus/usb/devices mostra una descrizione testuale dei dispositivi connessi e delle loro funzionalità

Interfaccia Motorola A835

T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 3 Spd=12 MxCh= 0

D: Ver= 1.10 Cls=02(comm.) Sub=00 Prot=00 MxPS=64 #Cfgs= 1

P: Vendor=22b8 ProdID=3002 Rev= 0.01

S: Manufacturer=Motorola Inc.

S: Product=Motorola Phone (A835)

C:* #Ifs= 2 Cfg#= 1 Atr=c0 MxPwr= 20mA

I: If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=cdc_acm

E: Ad=8b(I) Atr=03(Int.) MxPS= 16 Ivl=10ms

I: If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_acm

E: Ad=05(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms

E: Ad=86(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms

Topology

T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 3 Spd=12 MxCh= 0

D: Ver= 1.10 Cls=02(comm.) Sub=00 Prot=00 MxPS=64 #Cfgs= 1

P: Vendor=22b8 ProdID=3002 Rev= 0.01

S: Manufacturer=Motorola Inc.

S: Product=Motorola Phone (A835)

C:* #Ifs= 2 Cfg#= 1 Atr=c0 MxPwr= 20mA

I: If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=cdc_acm

E: Ad=8b(I) Atr=03(Int.) MxPS= 16 Ivl=10ms

I: If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_acm

E: Ad=05(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms

E: Ad=86(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms

Identificativo BUS e assegnazione del dispositivo all'interno dell'albero di connessione

Numero di dispositivi collegabili in cascata

Velocità

Description

T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 3 Spd=12 MxCh= 0

D: Ver= 1.10 Cls=02(comm.) Sub=00 Prot=00 MxPS=64 #Cfgs= 1

P: Vendor=22b8 ProdID=3002 Rev= 0.01

S: Manufacturer=Motorola Inc.

S: Product=Motorola Phone (A835)

C:* #Ifs= 2 Cfg#= 1 Atr=c0 MxPwr= 20mA

I: If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=cdc_acm

E: Ad=8b(I) Atr=03(Int.) MxPS= 16 Ivl=10ms

I: If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_acm

E: Ad=05(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms

E: Ad=86(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms

Versione USB

Numero di configurazioni

Classe, sottoclasse e protocollo

Dimensione pacchetto Endpoint 0

Product

T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 3 Spd=12 MxCh= 0

D: Ver= 1.10 Cls=02(comm.) Sub=00 Prot=00 MxPS=64 #Cfgs= 1

P: Vendor=22b8 ProdID=3002 Rev= 0.01

S: Manufacturer=Motorola Inc.

S: Product=Motorola Phone (A835)

C:* #Ifs= 2 Cfg#= 1 Atr=c0 MxPwr= 20mA

I: If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=cdc_acm

E: Ad=8b(I) Atr=03(Int.) MxPS= 16 Ivl=10ms

I: If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_acm

E: Ad=05(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms

E: Ad=86(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms

Identificativo produttore

Revisione prodotto

Identificativo prodotto

Descrizione prodotto

T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 3 Spd=12 MxCh= 0

D: Ver= 1.10 Cls=02(comm.) Sub=00 Prot=00 MxPS=64 #Cfgs= 1

P: Vendor=22b8 ProdID=3002 Rev= 0.01

S: Manufacturer=Motorola Inc.

S: Product=Motorola Phone (A835)

C:* #Ifs= 2 Cfg#= 1 Atr=c0 MxPwr= 20mA

I: If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=cdc_acm

E: Ad=8b(I) Atr=03(Int.) MxPS= 16 Ivl=10ms

I: If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_acm

E: Ad=05(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms

E: Ad=86(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms

Nome produttore

Nome prodotto

Configuration

T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 3 Spd=12 MxCh= 0

D: Ver= 1.10 Cls=02(comm.) Sub=00 Prot=00 MxPS=64 #Cfgs= 1

P: Vendor=22b8 ProdID=3002 Rev= 0.01

S: Manufacturer=Motorola Inc.

S: Product=Motorola Phone (A835)

C:* #Ifs= 2 Cfg#= 1 Atr=c0 MxPwr= 20mA

I: If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=cdc_acm

E: Ad=8b(I) Atr=03(Int.) MxPS= 16 Ivl=10ms

I: If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_acm

E: Ad=05(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms

E: Ad=86(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms

Configurazione attiva e numero

Numero interfacce esportate

Corrente assorbita sul bus USB
(max 500mA)

Tipo di alimentazione

Interface

T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 3 Spd=12 MxCh= 0

D: Ver= 1.10 Cls=02(comm.) Sub=00 Prot=00 MxPS=64 #Cfgs= 1

P: Vendor=22b8 ProdID=3002 Rev= 0.01

S: Manufacturer=Motorola Inc.

S: Product=Motorola Phone (A835)

C:* #Ifs= 2 Cfg#= 1 Atr=c0 MxPwr= 20mA

I: If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=cdc_acm

E: Ad=8b(I) Atr=03(Int.) MxPS= 16 Ivl=10ms

I: If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_acm

E: Ad=05(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms

E: Ad=86(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms

Numero di interfaccia

Driver assegnato all'interfaccia

Classe, sottoclasse e protocollo interfaccia

Numero di Endpoint

Impostazione alternativa per l'interfaccia

Endpoint

T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 3 Spd=12 MxCh= 0

D: Ver= 1.10 Cls=02(comm.) Sub=00 Prot=00 MxPS=64 #Cfgs= 1

P: Vendor=22b8 ProdID=3002 Rev= 0.01

S: Manufacturer=Motorola Inc.

S: Product=Motorola Phone (A835)

C:* #Ifs= 2 Cfg#= 1 Atr=c0 MxPwr= 20mA

I: If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=cdc_acm

E: Ad=8b(I) Atr=03(Int.) MxPS= 16 Ivl=10ms

I: If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_acm

E: Ad=05(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms

E: Ad=86(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms

Indirizzo Endpoint

(riservato)

Dimensione pacchetto

Attributo che indica il tipo di trasferimento assegnato all'Endpoint

Funzioni esportate

T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 3 Spd=12 MxCh= 0

D: Ver= 1.10 Cls=02(comm.) Sub=00 Prot=00 MxPS=64 #Cfgs= 1

P: Vendor=22b8 ProdID=3002 Rev= 0.01

S: Manufacturer=Motorola Inc.

S: Product=Motorola Phone (A835)

C:* #Ifs= 2 Cfg#= 1 Atr=c0 MxPwr= 20mA

I: If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=02 Prot=01 Driver=cdc_acm

E: Ad=8b(I) Atr=03(Int.) MxPS= 16 Ivl=10ms

I: If#= 1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_acm

E: Ad=05(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms

E: Ad=86(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms

Funzioni esportate

Il dispositivo annuncia sul bus USB che esporta una interfaccia di tipo seriale, ma il sistema associa il driver cdc_acm che non permette la comunicazione (o meglio, il sistema appare instabile: la maggior parte delle volte il driver non viene caricato)

Possiamo forzare il sottosistema USB ad assegnare il driver USB-Serial al telefono cellulare in uso

Installazione driver seriale

Rimuoviamo il modulo “errato”:
rmmod cdc_acm

Richiediamo il caricamento del driver USB-Serial per il dispositivo connesso al bus mostrato da devices:
modprobe usbserial vendor=0x22b8 product=0x3002

Il sistema ci informa (dmesg) che il processo è andato a buon fine:
usb 1-2: Generic converter now attached to ttyUSB0 (or usb/tts/0 for devfs)
drivers/usb/core/usb.c: registered new driver usbserial
drivers/usb/serial/usb-serial.c: USB Serial Driver core v2.0

Bluetooth

Bluetooth è una tecnologia wireless per l'interfacciamento di dispositivi su canale radio 2.4GHz a spread spectrum

Semplificando, Bluetooth sostituisce la moltitudine di cavi e connettori con una interfaccia standard per il discovery e l'utilizzo di periferiche in ambito personale

E' una specifica riconosciuta da tutti i sistemi operativi e produttori di hardware

Lo stack Bluetooth

Link controller

Radio

Link manager

L2CAP

HCI

SDP

RFComm

OBEX

Applicazioni

Bluetooth per Linux: BLUEZ

L'implementazione Bluetooth ufficiale per Linux è Bluez, che fornisce:

Driver per alcuni dongle Bluetooth USB

Utility per il discovery dei dispositivi

Utility per l'utilizzo dei servizi Bluetooth (seriali, dialup, file transfer, network access...)

Per il trasferimento file e la sincronizzazione è necessario utilizzare una implementazione di Obex (OpenObex)

Attivazione dello stack Bluetooth

Inserendo il dongle Bluetooth USB, il kernel informa dell'avvenuta attivazione del dispositivo

Il demone hcid è responsabile della connessione al dispositivo

Il comando sdptool browse mostra i servizi esportati da ciascun dispositivo

Binding porta Dialup

Browsing 00:0A:28:14:75:E9 ...

Service RecHandle: 0x0

Service Class ID List:

"SDP Server" (0x1000)

Protocol Descriptor List:

"L2CAP" (0x0100)

"SDP" (0x0001)

Profile Descriptor List:

"" (0x1000)

Version: 0x0100

... il dispositivo si presenta...

Indirizzo fisico dell'interfaccia Bluetooth

Identificazione porta Dialup

... e descrive i servizi offerti:

Service Name: Dial-up networking Gateway

Service Description: Dial-up networking Gateway

Service Provider: Motorola

Service RecHandle: 0x10001

Service Class ID List:

"Dialup Networking" (0x1103)

Protocol Descriptor List:

"L2CAP" (0x0100)

"RFCOMM" (0x0003)

Channel: 1

Nome del servizio

Canale (porta) del servizio Dialup

Si tratta pur sempre di una connessione seriale... :-)

Assegnazione porta Dialup

Una volta identificato il servizio di interesse, possiamo assegnare la porta locale rfcomm0 al servizio 1 del dispositivo in uso:
rfcomm bind 0 00:0A:28:14:75:E9 1

/dev/rfcomm0 diventa l'handle locale per la seriale esportata dal telefonino

Configurazione software

Ora che le periferiche hardware sono configurate e sono disponibili i device connessi ai modem dei terminali telefonici, è necessario configurare i modem veri e propri e i parametri per l'accesso alla rete

Il software di riferimento è pppd, per il quale esistono delle utility di configurazione e dei front-end grafici

Configurazione KPPP

KPPP è una comoda utility di KDE per la gestione dell'accesso remoto attraverso linea telefonica

Permette di configurare il modem e i parametri di pppd

Gestisce più profili di connessione (in termini di account e configurazione di rete) ma, per ora, non permette di assegnare uno specifico modem ad ogni connessione

KPPP: parametri da configurare

Occorre configurare:

Profilo: nome, numero di telefono, username, password

Device: porta seriale (!) alla quale connettersi

Modem: parametri di inizializzazione del modem

KPPP: crezione di un profilo

KPPP: assegnazione device

KPPP: connessione GSM

Una chiamata dati è pressoché una chiamata “telefonica”, non si sfruttano i vantaggi della rete cellulare digitale

La configurazione è analoga

Velocità e costi sono... da provare! ;-)

Importante: la velocità della porta seriale deve corrispondere a quella supportata dal terminale!

KPPP: connessione GPRS

GPRS è la tecnologia per il trasferimento dati veloce su rete telefonica GSM

Attraverso l'uso di più timeslot, permette di raggiungere velocità paragonabili ad una connessione telefonica analogica

L'esempio che segue mostra le modalità di configurazione per l'accesso alla rete GPRS con terminale Nokia 6600 attraverso operatore “Vodafone”

GPRS: numero e autenticazione

GPRS: configurazione modem

GPRS: configurazione modem

GPRS: username d'accesso

I campi Login ID e password devono essere lasciati vuoti

GPRS: prestazioni

KPPP: connessione EDGE

Una tecnologia compatibilile con la rete GSM per la trasmissione dati ad alta velocità (superiore ai
200Kbps)

Non ho un telefono EDGE
a disposizione: per
donazioni (!) vedere
l'email a fine
presentazione! :-)

Scheda EDGE PCMCIA

(fonte sito TIM)

KPPP: connessione UMTS

UMTS è la tecnologia per la telefonia cellulare di terza generazione (3G)

Permette di raggiungere velocità superiori a 300Kbps nelle zone coperte dal servizio

L'esempio che segue mostra le modalità di configurazione per l'accesso alla rete UMTS con terminale Motorola A835 attraverso operatore “3”

UMTS: numero e autenticazione

UMTS: configurazione modem

UMTS: username d'accesso

Il Login ID è il numero di telefono, completo di prefisso (ma senza prefisso internazionale). Il campo password deve essere lasciato vuoto.

UMTS: prestazioni

Domande

Bibliografia e riferimenti

TuxMobil: http://www.tuxmobil.org

Linux USB: http://www.linux-usb.org

Bluez: http://www.bluez.org

Unwired Linux
R. Weeks, E. Dumbill, B. Jepson, O'Reilly

The Indispensable PC Hardware Book
Hans-Peter Messmer, Addison-Wesley Professional

Motorola A835 e Linux Mini-HOWTO
http://www.gerdavax.it/linux/umts

Arrivederci al Linux Day 2005!

Stefano Sanna

gerdavax AT tiscali.it

This work is licensed under the Creative Commons Attribution-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/2.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

2004-10-13T14:57:47