Bezdrôtové modemy, okrem toho, že sú modemami, môžu zároveň obsahovať aj pamäťovú kartu a zvyčajne je na nich aj virtuálne CD-ROM médium, na ktorom bývajú uložené ovládače pre dané zariadenie. Problém pre používateľa Linuxu však môže nastať vtedy, ak dané zariadenie nie je tak celkom kompatibilné s naším operačným systémom a darmo pátrame po nejakom linuxovom ovládači - nemôžeme ho nájsť ani na spomínanom virtuálnom CD a ani na oficiálnych webových stránkach výrobcu. A presne s takýmto problémom som sa stretol aj ja. Jednalo sa o bezdrôtový modem od firmy Samsung, konkrétny model: SGH-Z810, ktorý sa plánoval používať na operačnom systéme Ubuntu 10.04. Tento návod je však možné použiť aj pre iné modemy a iné systémy založené na Linuxe.
Kedže som teda nikde nenašiel oficiálny ovládač pre toto zariadenie, pustil som sa do hľadania alternatívnych riešení a nekonečného skúšania. Moja snaha nakoniec bola odmenená úspechom, kde sa zase raz potvrdilo pravidlo: Komu sa nelení, tomu sa zelení
. A teraz priamo k veci.
Pre začiatok, je potrebné mať nainštalovanú knižnicu libusb, ktorá by v Ubuntu mala byť. Pokiaľ prítomná nie je, je možné ju nájsť v Ubuntu repozitároch. Ďalej budeme potrebovať šikovnú vecičku, USB_ModeSwitch. Tento program je možné takisto nájsť v Ubuntu repozitároch (balík sa volá usb-modeswitch), prípadne na stránke autora, kde môžete nájsť aj ďalšie informácie o tomto kuse softwaru. Vyššie som písal, že zariadenie nie je kompatibilné so systémom. Nie je to tak celkom pravda. Modem, ako taký, kompatibilný s Linuxom je. Problém však je ten, že systém nie je schopný prepnúť toto zariadenie z režimu pamäťového zariadenia (je tam predsa jednak spomínaný virtuálny CD-ROM, jednak pamäťová karta) do režimu modemu. A práve na toto prepnutie nám slúži USB_ModeSwitch.
Ďalej budeme potrebovať nakonfigurovať USB_ModeSwitch pre dané zariadenie. Na to nám slúži súbor /etc/usb-modeswitch.conf. V tomto súbore odkomentujte odsek prislúchajúci k danému zariadeniu (v našom prípade odsek označený ako Samsung SGH-Z810 USB (with microSD card)
). Pokiaľ v tomto priečinku konfiguračný súbor nemáme, môžeme si ho vytvoriť, a to s nasledujúcim obsahom:
# Samsung SGH-Z810 USB (with microSD card)
# This ID gets an "Option" treatment by newer kernels.
# Use module option "option_zero_cd=2" with usb-storage.
# A kernel patch to fix the problem is pending.
# Contributor: A Friend
DefaultVendor= 0x05c6
DefaultProduct= 0x1000
TargetVendor= 0x04e8
TargetProduct= 0x6601
CheckSuccess=10
# only for reference
MessageEndpoint=0x05
MessageContent="55534243123456780000000000000616000000000000000000000000000000"
Ak máme nakonfigurovaný program USB_ModeSwitch, potom pripojte modem k počítaču a počkajte, kým sa zobrazí ako pamäťové zariadenie. Ďalej spustite príkaz
usb_modeswitch
s právami roota. Pokiaľ vo výpise niečo nesedí, konkrétne výpis vyzerá nejako takto:
Looking for target devices ...
No devices in target mode or class found
Looking for default devices ...
Found default devices (1)
Accessing device 014 on bus 007 ...
Using endpoints 0x05 (out) and 0x85 (in)
Inquiring device details; driver will be detached ...
Looking for active driver ...
No driver found. Either detached before or never attached
SCSI inquiry data (for identification)
-------------------------
Vendor String: ����
Model String: �����8��
Revision String: ��
-------------------------
Error: could not get description string "manufacturer"
Error: could not get description string "product"
Error: could not get description string "serial number"
USB description data (for identification)
-------------------------
Manufacturer:
Product:
Serial No.:
-------------------------
Setting up communication with interface 0 ...
Trying to send the message to endpoint 0x05 ...
OK, message successfully sent
Device is gone, skipping any further commands
-> Run lsusb to note any changes. Bye.
lsusb
neoznámi prítomnosť tohoto zariadenia, je potreba doplniť riadok InquireDevice=0
do súboru /etc/usb-modeswitch.conf. Bohužiaľ neviem, čo presne tento parameter robí, skrátka som ho nejakým zázrakom vygooglil a mne pomohol.Ďalším krokom je vytvorenie súboru /etc/udev/rules.d/45-hotplug.rules. Obsahom tohoto súboru nech je toto:
SUBSYSTEM=="usb", SYSFS{idProduct}=="1000", SYSFS{idVendor}=="05c6", RUN+="/usr/sbin/usb_modeswitch"
usb_modeswitch
.Ďalej budeme pravdepodobne potrebovať nastaviť PPPD (Point-to-Point Protocol Daemon, ktorý by mal byť súčasťou Ubuntu). Píšem pravdepodobne, pretože sa domnievam, že nie všetky zariadenia to budú potrebovať - odporúčam teda skúsiť preskočiť nasledujúce nastavenia a vyskúšať funkčnosť modemu aj bez nich. Tieto nastavenia sú špecifické v závislosti od operátora, preto ak nevyužívate služieb mobilného operátora Orange Slovensko, asi budú aj tak nepoužiteľné.
Prvým konfiguračným súborom je /etc/ppp/options. Upozorňujem, že toto nie je kompletný konfiguračný súbor - sú to iba riadky, ktoré boli doplnené alebo zmenené oproti východziemu nastaveniu.
# noproxyarp
nodetach
# updetach
# noipx
noipdefault
# Orange Slovakia (modem Samsung SGH Z810)
/dev/ttyACM0
921600
crtscts
# user ""
# show-password
refuse-pap
refuse-mschap
refuse-mschap-v2
noauth
defaultroute
usepeerdns
# dryrun
# debug
# chat -v -f ... verbose
connect '/usr/sbin/chat -f /etc/ppp/chatscripts/sgh-z810'
noipdefault
ipcp-accept-local
# local
# novj
# novjccomp
nobsdcomp
nodeflate
# lcp-echo-interval 10
# lcp-echo-failure 5
# lcp-restart 5
disconnect '/usr/sbin/chat -f /etc/ppp/chatscripts/sgh-z810-hang'
# noccp
# Samsung SGH-Z810 (HDSPA modem)
TIMEOUT 5
# ABORT 'NO ANSWER'
# ABORT 'ERROR'
ABORT 'BUSY'
ABORT 'NO CARRIER'
ABORT 'VOICE'
ABORT 'NO DIALTONE'
# ECHO OFF
# REPORT
SAY "Starting connect script\n"
# Z = reset the modem
'' ATZ
# is PIN necessary?
OK AT+CPIN?
# E0 - disable echoing of characters received from DTE in the command mode
# V1 - verbose result codes
# &D2 - upon DTR switch from ON to OFF, the call is released
# &C1 - DCD matches state of the remote modem's data carrier
# S0=0 - no automatic answer
OK ATE0V1&D2&C1S0=0
OK ATS7=60
OK ATS0=0
# show capabilities
#OK AT+GCAP
#OK AT+CLCK=?
# signal strength (GPRS >15)
OK AT+CSQ
# display network
#OK AT+COPS?
# terminal adapter manufacturer
# OK AT+GMI
# mobile equipment manufacturer
# OK AT+CGMI
# mobile equipment revision
# OK AT+CGMR
# show IMEI
OK AT+GSN
# GPRS network registration status
# OK AT+CGREG?
SAY "Setting PDP context\n"
# define PDP (Packet Data Protocol) context
# +CGDCONT=
SAY "Dialing...\n"
# D = dial a number
OK 'ATDT*99#'
CONNECT ''
# Samsung SGH-Z810 (HDSPA modem)
# insert a BREAK
#'' \K
# +++ = switches the modem from data to command state
# H = hang up
'' "+++ATH0"
SAY "Disconnected.\n"
Napriek veľkej snahe o stopercentné fungovanie tohoto modemu, toto riešenie má nejakú svoju chybičku na kráse. A to - pripojenie občas spadne. Teda aspoň v mojom prípade. Myslím ale, že na to, že zariadeniu sa nedostalo podpory zo strany výrobcu pre operačný systém Linux, je to stále lepšie ako nič. Sám autor programu USB_ModeSwitch na svojej stránke píše, že tento jeho program je vhodný na experimentovanie s nepodporovaným hardwarom. Odporúčam teda obstarať si radšej modem s podporou pre Linux, ak to je možné, a tento návod považovať iba ako riešenie v núdzi.
Pre pridávanie komentárov sa musíte prihlásiť.