Arkisto Marraskuulle 2008

Ajurin asentamisen monimutkaistaminen

Tiistaina, 4. Marraskuuta 2008

Ostin “lounaaksi” verkkokauppa.com:sta Prodige-merkkisen USB-sarjaportin (USB-RS232 siis, ei muuten ollut yhtään samannäköinen kuin verkkokaupan kuvassa). MacBook Pro:ssa tai iMacissä kun ei kummassakaan sarjaporttia vakiona tule.

Paketissa luvattiin tuki Mac-koneille. Olen aina luullut että valtaosassa Mac-koneista on kelkaton cd-asema, joten ensimmäinen yllätys oli mukana tullut vajaakokoinen mini-cd ilmeisesti ajureille. Pelkästään piuhan kiinni kytkemällä uutta sarjaporttia ei ilmestynyt /dev:n alle, joten ajurit selvästi olivat tarpeen. Mini-cd:tä ei tietenkään voi kelkattomaan asemaan laittaa ja netistä ei tuntunut tuolla Prodige-nimellä löytyvän joten USB Prober apuun.

Valmistajaksi paljastui FTDI, ja sillä hakien google löysikin heti oikeanoloisen ajurin. Lataukseen vain ja normi-installeri käyntiin. Salasanan kysyttyään asennus ystävällisesti ilmoitti että kone tarvitsee bootata asennuksen jälkeen ja kysyi haluaisinko silti jatkaa. No en tietenkään halunnut. Apple on nähnyt suurta vaivaa tehdessään käyttöjärjestelmästään mahdollisimman vähän uudellenkäynnistyksiä tarvitsevan, harmi vain etteivät kaikki ajurien tekijät tätä tiedä tai tästä välitä.

Kurkistus asennuspaketin sisuskaluihin osoitti, että käytännössä asennettavana oli yksi kernel-extensio joten asensinpa sen sitten käsin tähän tapaan (olettaen shellinä bash):

tmpdir=`mktemp  -d -t foo`
cd $tmpdir
gzip -cd /Volumes/FTDIUSBSerialDriver_v2_2_10/FTDIUSBSerialDriver.pkg/Contents/Archive.pax.gz | pax -r
sudo chown -R root:wheel System/Library/Extensions/FTDIUSBSerialDriver.kext
sudo chmod -R go-rwx System/Library/Extensions/FTDIUSBSerialDriver.kext
sudo cp -Rp System/Library/Extensions/FTDIUSBSerialDriver.kext /System/Library/Extensions/
cd -
rm -rf $tmpdir

Ja kas, kun adapterin laittoi koneeseen kiinni, näkyviin tuli /dev/cu.usbserial-<sarjanumero>!

(tarkkaavainen lukija ehkä huomaa, ettei extensiota asennettu paikoilleen Applen ohjeiden mukaan atomisesti eli siirtämällä valmis bundle oikeaan paikkaan kopioinnin sijaan, mutta jätetään sen korjaaminen harjoitustehtäväksi)