AsteriskNOW tapasztalatok + Cologne HFC-S ISDN kártya mizéria

Korábbi elastix-os élményeim után úgy döntöttem, körülnézek kicsit PBX-fronton, hátha találok valamit, ami jó alternatívája lehet az egyébként remekül használható, de mára kissé elavult és a benne foglalt szoftverek összetételét tekintve vegyesfelvágottnak számító Elastix-nak. Így bukkantam rá az AsteriskNOW-ra. Ez lényegében egy kusztomizált CentOS 6 rendszer, amibe gondosan belepakoltak minden olyan szoftvert, ami egy PBX működéséhez szükséges (asterisk, dahdi, libpri stb). A hétvégén tesztjelleggel felraktam egy VM alá a legfrissebb stabil verziót és egészen lenyűgözött, hogy mennyire profi módon van összerakva. Az (opcionálisan telepíthető) FreePBX 2.11 felület nagyon rendben van, nincs felesleges designelemekkel terhelve, kellően modern és tele van praktikus beállítási lehetőségekkel (pl. mellékeknél admin felületről állítható átirányítás foglaltság/elérhetetlenség esetén, komplett konfigurációs felület DAHDI-kompatibilis hardverek beüzemeléséhez, mellékek és DID-k tömeges importja CSV-ből stb), egyszóval megvan benne minden, amitől egy, a témában már némileg jártas rendszergazdának azonnal felcsillan a szeme.

A sok hasznos feature láttán úgy döntöttem, bátor leszek, és a kvázi elavult szoftverek miatt egyébként komoly hajtépések közepette felhúzott Elastix-alapú alközpontot lecserélem AsteriskNOW-ra.

Az átállás zökkenőmentes volt, ami talán nem is lenne annyira meglepő, hiszen a két disztró jórészt ugyanazokra a szoftverekre épül, annyi különbséggel, hogy az AsteriskNOW aktuális verziója CentOS 5 helyett CentOS 6-ra épül. Ez már önmagában is nagy előrelépés (jobb hardvertámogatás, megszámlálhatatlan bugfix, foltozott biztonsági rések stb), az, hogy még több, még hasznosabb feature és egy profi, minimalista, ugyanakkor a tooltip-eknek köszönhetően szükség esetén beszédes webes felület is jár mellé a FreePBX formájában, már csak hab a tortán.

Már majdnem álltam volna fel a székemből, hogy elinduljak hazafelé "mission complete!" felkiáltással, amikor egyszer csak szembesültem vele, hogy a Digium nem szereti a konkurenciát - sőt, mintha tudomást se venne róla, ugyanis a rivális gyártók adott esetben olcsó, belépőszintű és ennek köszönhetően nagy népszerűségnek örvendő hardvereit egyszerűen nem támogatja, csak a saját és hasonlóan neves (pl. Sangoma) gyártók kártyáival (illetve ezek "koppintásaival") hajlandó együttműködni. Az olcsóbb kártyákhoz készült driverek egyébként szabadon elérhetők a neten, ám ennek ellenére a Digium mégsem csomagolja bele őket a DAHDI csomagokba (opcionálisan sem), ezzel gyakorlatilag használhatatlanná téve ezeket a kártyákat AsteriskNOW alatt. Pontosan ezt szívtam meg egy OpenVox B100E kártyával is, ami egy bejövő ISDN vonal kezelését hivatott ellátni, de DAHDI driver (kernelmodul) hiányában a rendszer nem ismerte fel a kártyát és ezért nem is lehetett konfigurálni.

Hosszas fejtörés, neten keresgélés következett ezután, ahol ezerféle lehetséges megoldást találtam: misdn, chan_misdn használata, de nem jó, ez már elavult, nem működik az mISDN 2-es verziójával, chan_lcr modul használata, ami elvileg működik, de fordítgatni kell hozzá egy csomó mindent, dahdi visszabutítása régi verzióra, majd azt patchelni a gyártó által adott forrással stb. Ezek egyike sem volt nekem szimpatikus, mivel mindegyik rontja a rendszer konzisztenciáját, úgyhogy nem adtam fel, és a már sokszor bevált és egyébként talán a legkevésbé fájdalmas "töltsd le a forráscsomagot, patcheld meg, fordítsd újra és telepítsd" módszert választottam végül.

A csomag újrafordításához a Digium által publikált SRPM-et használtam, majd ezt egy másik projektből átemelt forrással patch-elve végül sikerült kifordítani egy stabilan működő drivert a kártyához, ami remekül együttműködik a 2.9-es DAHDI-val.

Az eredmény: a BRI kártya immáron megjelenik a FreePBX DAHDI config felületén, és minden további nélkül konfigurálható, és hozzákapcsolható egy trönkhöz.

A forráscsomag letölthető ITT, ha esetleg valakinek szüksége lenne rá. Előfordulhat, hogy cserélni kell a dahdi-linux-kmod.spec fájlban a kernel verziót a rendszeren futó verzióval egyezőre ("%define kversion ..."). Ha a verziószám stimmel, és telepítve van a futó kernel forrása, már csak build-elni kell a csomagot az "rpmbuild -ba dahdi-linux-kmod.spec" paranccsal és készen is vagyunk.

Az így kifordított RPM az "rpm -Uvh" paranccsal telepíthető, melynek hatására az eredeti csomagban lévő modulok törlődnek a rendszerről, és felkerülnek az újak a /lib/modules alá. Telepítés után szükség lehet egy újraindításra, vagy legalább a DAHDI komplett újraindítására ("service dahdi stop && service dahdi start").

Ennél a módszernél nem árt odafigyelni, hogy az így telepített csomag védve legyen az automatikus frissítésektől, különben később felülíródhat a csomagkezelőn keresztül egy óvatlan "yum update" során.

Ennek legegyszerűbb módja az alábbi sor felvétele az /etc/yum.conf-ba:

exclude=kmod-dahdi-linux