En,
er was licht ...
Ulrich Jörgens, Michael Kuschke
Vooral notebookgebruikers ondervinden problemen als ze hun systeem
in verschillende omgevingen willen gebruiken. Op dit moment
is de infraroodtechniek vanwege haar veelzijdigheid eigenlijk de beste keuze, maar bij
het gebruik onder Linux ondervind je nog wel wat problemen.
Juist bij mobiele computers bestaat het probleem van ad hoc
integraties in wisselende omgevingen. Daarvoor kun je het makkelijkste de
infrarood(IR)-interface gebruiken, die bijna elke notebook tegenwoordig heeft. Veel moederborden zijn
ook op infrarood voorbereid, terwijl andere apparaten zoals zaktelefoons en
palmtops steeds vaker ook een IR-interface krijgen.
Een vereniging van ongeveer 150 fabrikanten, de
Infrared Data Association (IrDA), zorgt voor het bewaken van de
standaard zodat de apparaten elkaar ook kunnen begrijpen. Zij streeft naar standaardisering
van de fysieke overdracht en de protocollen daarvan. Daarnaast
certificeert ze producten die aan de standaard voldoen. De
standaard is publiek toegankelijk, je kunt hem op de IrDA-website
opzoeken.
De standaardkarakteristieken van een IR-dataverbinding zijn:
- point-to-point-verbindingen met een directe zichtlijn,
- een overdrachtsafstand tot 1 m bij een hoek van ± 15 graden,
- verbindingssnelheden van 9600 bit/s tot 4 megabit/s (aan een
uitbreiding naar 16 megabit/s wordt gewerkt).
Voor gebruik onder Linux kan je ofwel
een ingebouwde IR-interface (diode) danwel een hardware-aanvulling
gebruiken. De meeste notebooks beschikken over een geïntegreerde IR-interface;
bij desktops zijn er losse interfaces die op een seriële of parallelle poort van
de pc worden aangesloten. Sommige mainboards beschikken van huis uit al over een bijbehorende interface.
Sinds versie 2.2.x bevat de Linux-kernel support voor IrDA. Dit
vervult voor nieuwere distributies de noodzakelijke basisvoorwaarden met
betrekking tot de driver. Voor het gebruik van de IrDA protocolstack
zijn er extra componenten nodig. De centrale onderdelen bevinden zich
in de irda-utils. De installatie van de IrDA-stack is afgekeken van die van
PC Cards - de eigenlijke
sturing wordt verzorgt door een user level daemon, de irmanager. Deze
neemt met behulp van tools en configuratiebestanden onder /etc/irda de configuratie
van de protocolelementen op zich en installeert eventueel netwerk en
printer(s) die de IR-interface gebruiken. Als de irda-utils niet
worden meegeleverd, moet je ze zelf ophalen en (zie kader vindplaatsen
op het
web) en compileren.
Inclusief praktische beschouwing
Voor dit artikel hebben wij tests met notebooks van Dell en Siemens
uitgevoerd: een Dell Latitude 233 CP en een Scenic Mobile 510AGP, allebei
met een geïntegreerde IR-interface. De irda-utils (versie 0.9.3-pre8) liepen onder kernelversie 2.2.9 zowel op de op Red
Hat-gebaseerde Halloween-distributie als ook op SuSE. De kernel werd voorzien van patch-2.2.9-irda2.
Het compileren van de in de irda-utils
zittende tools irdadump, irdaping
en obex vereiste nog meer (deels niet) aanwezige tools. Onder Red Hat
ontbrak daarvoor libtool en bij SuSE was autoconf
afwezig.
De autoconf.sh scripts bleken statisch op de omgeving van de ontwikkelaars
afgestemd. Zo vergelijken ze bij het controleren van de versie van
tools zoals libtool de uitvoer van de programma's (optie -version)
met vaste versienummers. Zo beklaagt de autoconf.sh van
irdadump bij het gebruik van een 1.3.x versie van libtool
zich dat libtool versie 1.2 of hoger vereist is. Na het aanpassen
van het shellscript werkte het compileren.
Na het compileren van de benodigde tools komt de configuratie van de stack.
Hiervoor moeten de bestanden drivers en network onder /etc/irda
worden aangepast. De concrete waarden hangen van het betreffende systeem
en de chipset af. Onder SuSe werkte IrLAN pas na het wijzigen
van het bestand network. Hier moest een geschikte ifconfig-regel
in plaats van de ifup/ifdown komen, omdat de irda-utils
voor Red
Hat geconfigureerd zijn. In Red Hat hoeft alleen het device irlan0
via de netwerkmanager geïnstalleerd worden. Na het starten van de irmanager
(irmanager -d1 -s1) beschikten we over een netwerkverbinding die
een onverwacht goede performance had. Met niet-gecomprimeerde bestanden
was de FTP-transferrate circa 13 KB/s en met gecomprimeerde bestanden
lag het nog altijd bij 7 tot 9 KB/s. De verbindingskwaliteit nam snel af
naarmate de afstand tot de notebook groter werd: we kregen met
weigeringen te maken en de gegevenssnelheid daalde behoorlijk. Bij een afstand van meer
dan twee meter was er definitief geen verbinding meer. Zodra de
apparaten weer dichter bij elkaar werden gebracht, werd de verbinding
weer automatisch tot stand gebracht.
Interrupts zorgen voor problemen
Op de Latitude zorgde de cardmgr voor onverwachte problemen De
cardmgr bezet bij ingestoken PCMCIA-netwerkkaart IRQ 3.
De IR-poort kan pas na het blokkeren van de interrupt in het bestand /etc/pcmcia/config.opts
aangesproken worden. Met de overgebleven IRQ's kon de netwerkkaart niet
meer aan de praat worden gebracht. Als je beide tegelijkertijd wilt
gebruiken, moet je in sommige gevallen de IR-interface in de BIOS op COM1
in plaats van COM2 zetten. Dat betekent echter wel dat je afziet van de
seriële poort.
Behalve notebooks en pc's beschikt echter ondertussen ook een reeks andere
apparaten over IR-interfaces, zoals de populaire Palm III.
Deze laat zich van huis uit alleen via de cradle met een pc
synchroniseren. Voorwaarde voor het verbinding maken met de pc is een ‘Enhanced Infrared Update’,
die je gratis kunt downloaden bij 3Com. Deze software implementeert het
IrCOMM-protocol, dat een seriële interface emuleert. Daarmee kun je bijvoorbeeld
via de infraroodinterface van een zaktelefoon een TCP/IP-verbinding opbouwen. Voor de synchronisatie met een pc ben je er echter nog niet. Het
synchroniseren van de objecten vindt bij de Palm III via het
IrOBEX-protocol plaats. Uitkomst brengt hier de (kosten met zich
meebrengende) software
IrLink van IS/Complete. Als de Palm III overeenkomstig geprepareerd (Beam
on), ingeschakeld en op de IR-interface van de pc gericht is, duikt hij in
de discovery op. Op de notebook geeft cat /proc/net/irda/discovery
bij succes bijvoorbeeld de volgende informatie via de Palm weer:
# cat /proc/net/irda/discovery
IrLMP: Discovery log:
name: Uli Jörgens, hint: PDA/Palmtop IrOBEX ,
saddr: 0x9a4110b7, daddr: 0x60745746
Hiermee is er voldaan aan de technische voorwaarde voor een
gegevensuitwisseling, de Palm reageert op de signalen van irdaping.
Voor een zinvol gebruik van de verbinding ontbreekt alleen nog de
bijbehorende applicatiesoftware. De Pilot Link tools bieden voor dit
doel een uitgebreide verzameling van shellcommando's, waarmee nagenoeg
willekeurige gegevens tussen Pilot en Linux uitgewisseld kunnen worden. De
gebruiker vindt voor praktisch alles een passend programma: van de adressen
en afspraken via de installatie van software tot en met het uitlezen van
de Palm-ROM.
Het wordt echter pas echt interessant als ook applicaties voor
afspraken- en adressenbeheer à la Outlook kunnen synchroniseren.
KDE stelt hiervoor kpilot ter beschikking en maakt de datasynchronisatie
met de Palm III mogelijk. Deze slaat de gegevens van de zogenaamde conduits
zoals ToDo, Adresboek en Agenda in het vcs-formaat op. De conduit-setup legt
het pad van de bijbehorende synchronisatiefile vast. Voor korganizer
bevindt zich deze meestal op ~/.kde/share/apps/korganizer. Voorwaarde
voor kpilot is KDE 1.1.1, onder versie 1.1 konden wij de tool niet
installeren. Voor het synchroniseren via de IR-interface dient het device /dev/irnine.
Als het nog niet bestaat, moet de gebruiker het met mknod /dev/irnine c 60 64
aanleggen. /dev/irnine emuleert een negenpolige RS-232-interface
inclusief hardware flow- en modemcontrole.
De transferrate is weliswaar te vergelijken met die van de cradle,
maar bij grotere datahoeveelheden werd sporadisch de verbinding
verbroken. Zodoende moesten we meerdere keren een synchronisatie starten
eer ze helemaal doorliep. Pas na het
resetten door middel van een 'brute' prik in de achterkant kwam de Palm na zo'n verbreking weer
tot leven, maar de oorzaak hebben we niet kunnen achterhalen. Momenteel
vergt de synchronisatie over de IR-interface naast een flinke dosis
geknutsel behoorlijk wat geduld. Als je dat niet hebt, ben je beter af met de
aanzienlijk robuustere overdracht via cradle en kabel.
Helaas leverden geen van de pogingen een Windows CE-handheld met Linux-IrDA
aan te spreken het gewenste resultaat op. De handheld duikt
weliswaar in de discovery van de Linux-computer op, maar de
bovenliggende protocollen (TCP/IP) kunnen het niet eens worden. Microsoft
blijkt hier noch het met IrLAN vastgelegde pad noch de emulatie van een
seriële verbinding door IrCOMM te ondersteunen.
IrDA onder controle
Ook door de experimentele status van de implementatie zijn debugging
en diagnose een absolute 'must'. Onder /proc/net/irda
zijn er diverse bestanden waarmee de protocollagen op de vingers kunnen
worden gekeken:
- discovery: somt ontdekte IrDA-partnercomputers op.
- irias: geeft alle geregistreerde diensten met attributen
weer.
- irda_device: geeft informatie over het low level IrDA-device.
- irlap, irlmp, irlpt_client, irlpt_server,
ircomm, irlan en irttp leveren informatie
over de instanties van de desbetreffende protocollaag.
Met diverse pseudobestanden onder
/proc/sys/net/irda kan de protocolstack
direct beïnvloed worden. Met de juiste invoer in deze bestanden kunnen
bijvoorbeeld compressie en debugging gestuurd worden. Zo schakelt
echo
4 > /proc/sys/net/irda/debug de volledige debugging van de IrDA-stack
in. De naam van de Linux-computer in de IrDA-wereld kun je met het
bestand
devname veranderen. Deze aanpassing voert de
irmanager
in het kader van de initialisatie zelfstandig uit. Het automatisch
ontdekken van infraroodapparauur kun je met 0 of 1 in het bestand
discovery
omschakelen.
Conclusie
Momenteel is de driverontwikkeling onder Linux nog lang niet volledig.
FIR-drivers voor de geteste apparaten waren niet beschikbaar. Helaas is
het praktisch onmogelijk om de chipset vast te stellen. Het ingewikkelde
protocol doet meer dan wat noodzakelijk is, zodat troubleshooting een
tijdrovend karwei wordt.Vergeleken met Windows ben je met Linux echter
beter af, want Windows houdt praktisch geen rekening met diagnosemogelijkheden.
Zodoende zijn niet alleen onder Linux de toepassingsgebieden van IrDA beperkt.
Waarschijnlijk gebruikt slechts een klein deel van de
notebook/PDA-bezitters
de (bijna) verplichte IrDA-interface. Naast de hardwarevragen zal een
eenvoudige integratie in de bijbehorende desktopapplicaties over
bruikbaarheid en verspreiding beslissen. Wij vonden alleen het ad hoc netwerk
tussen twee overeenkomstig uitgeruste en geconfigureerde pc's zonder dat
je eerst kabels moest trekken echt nuttig. Als Bluetooth waarmaakt wat
de fabrikanten beloven, zal IrDA op sommige gebieden geduchte
concurrentie krijgen. Pluspunten van IrDA zijn de marktverspreiding en
de beschikbaarheid van drivers voor heel veel systemen. De ontwikkeling
laat zien (met de huidige versie van de irda-utils, 0.9.4, een kernel
nieuwer dan 2.2.12 en een patch kan zelfs een Siemens-C25-zaktelefoon
aangestuurd worden) dat de Linux-gemeenschap intensief de problemen uit
de wereld probeert te helpen. Misschien dat zelfs dit artikel wel iemand
stimuleert om hieraan mee te helpen. (avr)
Ulrich Jörgens
werkt bij de Dr. Materna GmbH als adviseur voor systeemmanagement.
Michael Kuschke
is bij NavaraSoft werkzaam als hoofd van de afdeling development.
Begin artikel