[ELNAPOLVA] 6 soros port egy gépben hogyan MCS9865

Fórumok

A gyártó úgy a ajánlja a 4 portos soros kártyát hogy Linux -ra is jó.
A telepítési leírása azonban a jól megszokott régi technológiát követi:
- lspci -v kideríteni a port címeket és azu interruptot
- setserial -al beállítani a megfelelő /dev/ttyS?

EZ mind szép, de a Debian kernel -t max 4 portra fordítják, elvileg ezt az "nr_uarts=" kernel paraméterrel belehet állítani - beállítottam. Azonban még mindíg csak =/dev/ttyS0 - 4 van node -om, holott az lspci is látja és felismeri a zsugát - egyébként NetMOS chipset 9865.
Most akkor mit kell még "megpiszkálni" - udev?

Hozzászólások

manapság mknod mellett az udev szabályokat kéne átböngészni inkább.

"Jegyezze fel a vádhoz - utasította Metcalf őrnagy a tizedest, aki tudott gyorsírni. - Tiszteletlenül beszélt a feljebbvalójával, amikor nem pofázott közbe."

Értem én hogy trollkodni jó, meg könnyű úgy, hogy a részleteket figyelmen kívül hagyjuk, de ott van mellette az is, hogy az nr_uarts-al többet is meg tudsz adni.

Ott van az a tény, hogy a kernelnek beállított max-ot ha növeled, akkor annyival több kernel memóriát allokál fölöslegesen.

Azért ahol jelenleg 2-nél több sorosport van egy gépben, már az is ritkaság. De legacy okokból megtartották a 4-et, mert vannak még 486-osok célfeladattal, ahol még tényleg 4 volt...

Ha meg speciális célfeladata van a gépnek, még mindig ott az nr_uarts, ill. hogy a "célfeladatra" "célkernelt" fordítasz. Az sem kivitelezhető, hogy olyan gyári kernel legyen, ami _mindenre_ jó.
Ehhez képest, a kernel flavour-os megközelítésük szerintem zseniális...

Node... Ehhez már kicsit le kéne ülni, meg gondolkodni, és ez még a trollkodás élményét is földbe tiporná. "Ó azok a szemét debian fejlesztők!"


Alszom rá egyet és megpróbálom kitanulni az udev scriptet - legalább egy ilyen egyszerű feladaton.
Egyébként a 486 -os hasonlat nagyon találó, az én esetemben ppp terminál szerver szerűséget kell felépítenem komoly 9600 baud sebességre aszinkron.

* Én egy indián vagyok. Minden indián hazudik.

Ha trollkodni akartam volna, akkor pl. azt mondtam volna, hogy "Debian, mert megérdemled". :)
Csak pusztán megjegyeztem miután megnéztem, mert pl. suseba még mindig 8 van.
Több memóriát? Portonként akár 5KB-ot is? Az manapság tényleg sokat számít...
--
Discover It - Have a lot of fun!

Hát ez most zavarba ejtő - nincs ttyS -re semmilyen rule!? - vagy csak én nem találom. Akkor mopst ki hozza létre a ttyS0 - ttyS4 -ig a node -okat?
A setserial nem lehet, az csak beállít, lehet hogy maga a kernel és az nr_uarts=8 nem is működik? Tény, hogy két opciót is állítok, azaz a lilo.conf így néz ki:
append="vt.default_utf8=0 nr_uarts=8"
Lehet hogy kell egy vessző? - ez sem segített, továbbra is csak négy eszköz hivatkozás van :(
A syslogban
Serial: 8250/16550 driver $Revision 1.90 $ 4 ports, IRQ sharing enabled
Ez most azt jelenti hogy mégis csak 4 port? Viszont az lsmod nem "köp" semmilyen soros drivert!?
Ez egyre zavarosabb, nem tud valaki egy kis fényt deríteni ezekre?

* Én egy indián vagyok. Minden indián hazudik.

Sajnos semmi változás :(
Most próbálkozom a kernel forgatással - valami nem stimmel az "lguest" cucc makefile -ban, rossz az include path.
Mivel konfigurálnom is kellett érdekes dolgokat találtam, a gyári kernel config -ban két paraméter foglalkozik az UART al:
CONFIG_SERIAL_8250_NR_UARTS=32
a vicc hogy ez a beállítás felel a lefoglalt memóriáért!?
CONFIG_SERIAL_8250RINTUME_UARTS=4
ez pedig hogy hányat is készít elő.
Sajnos nem tudom, hogy a kernel paraméterek mennyire "rímelnek" a config paraméterek elnevezésével, de megpróbáltam azt is, hogy runtime_uarts=8 de ez sem hozott változást :(
Az viszont bizonyos, hogy a ttyS eszközökel az UDEV nem foglalkozik (már ami a jelenlegi Lenny gyári scriptumokat illeti), így tuti hogy a kernelt kell piszkálni. Kicsit érthetetlen miért kell egy ilyen piszlicsáré dolog miatt kernelt forgatni - valyon ki az aki ezt így eldöntötte és miért hozott ilyen "bugyuta" döntést? Ráadásul ez a fura fordítási hiba. Kicsit bugosnak tűnik ez nekem, régebben azért korrektebbek voltak a kernel csomagok. Persze az is lehet hogy én hagytam ki valamit! Elválik ha ezen a hibán túl leszek.

* Én egy indián vagyok. Minden indián hazudik.

Hát ez kalandos :(
Először is a "8250.nr_uarts=6" tökéletesen működik, én nem működöm tökéletesen. Azonban a 8250 -es soros driver nem tudja lekezelni a jelzett NetMos MCS9865 chipet. Én (mivel a telepítő lemezen nem volt megfelelő driver) egy régebbi chiphez tartozó leírás alapján akartam feltelepíteni, de nem sikerült (ehhez kellett volna több node).
Végül, a gyártó honlapjáról lehúztam a megfelelő Linux drivert lefordítottam, feltelepítettem a modulokat és ... a négy portból csak kettőt lát :( Elég furcsa egy driver, mivel ahhoz, hogy a négyportos verzió működjön minden más verziót ki kell venni (remark) az mcs9865-isa.c modulban lévő "pci_device_id" típusú "serial_pci_isa_tbl" ben ahol efféle sorok találhatóak:

{PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9865, PCI_SUBDEV_ID_9865,
PCI_SUBVEN_ID_9865_4s, 0,0,0},

A hozzátartozó include fájlban az áll, hogy
#define PCI_DEVICE_ID_NETMOS_9865 0x9865
#define PCI_SUBDEV_ID_9865 0xa000

#define PCI_SUBVEN_ID_9865_2s 0x3002
#define PCI_SUBVEN_ID_9865_4s 0x3004
...

Az lspci -v kimenetén pedig:
02:09.0 Serial controller: NetMos Technology Device 9865 (prog-if 02 [16550])
Subsystem: Device a000:1000
Flags: medium devsel, IRQ 18
I/O ports at 1040 [=8]
Memory at fc401000 (32-bit, non-prefetchable) [=4K]
Memory at fc402000 (32-bit, non-prefetchable) [=4K]
Capabilities: [48] Power Management version 2

02:09.1 Serial controller: NetMos Technology Device 9865 (prog-if 02 [16550])
Subsystem: Device a000:1000
Flags: medium devsel, IRQ 21
I/O ports at 1048 [=8]
Memory at fc403000 (32-bit, non-prefetchable) [=4K]
Memory at fc404000 (32-bit, non-prefetchable) [=4K]
Capabilities: [48] Power Management version 2

02:09.2 Communication controller: NetMos Technology Device 9865
Subsystem: Device a000:3002
Flags: bus master, medium devsel, latency 64, IRQ 11
I/O ports at 1050 [=8]
I/O ports at 1058 [=8]
I/O ports at 1060 [=8]
I/O ports at 1068 [=8]
Memory at fc405000 (32-bit, non-prefetchable) [=4K]
Capabilities: [48] Power Management version 2

Az utóbbi "Subsystem: Device a000:3002" a kétsorosra utal, vagy nem?
Valaki tud valamit a Linux device driverekről? Szerintem itt valami hiba van!

* Én egy indián vagyok. Minden indián hazudik.

Hát fizikailag biztos - van rajta négy komplett RS-232C vonali meghajtó IC és négy DB9 DSUB csatit lehet rátenni. Viszont valóban a PCI azonosító a két portosnak felel meg az #define alapján!? De ha megnézed van ott elég port cím is - mindenképpen zavaros :(

* Én egy indián vagyok. Minden indián hazudik.

De jó is az, hogy a Linux alá minden "Linux alatt támogatott" hardvert be lehet ténylegesen üzemelni...

Sok kínlódás után és googlizás után, úgy tűnik vagy régebbi kernelt teszek fel (legfeljebb 2.6.24 ubuntuban sikerült valakinek ezzel működtetni a chipet), vagy várok egy új driver verzióra (most a legfrissebb az 1.0.0.5) esetleg ha lesz időm magam átírom - drivert még úgy sem írtam, ez elég egyszerűnek tűnik és a lényeg már benne van.
Mindenesetre ha ilyen NetMos chipbe akadtok, NE dugjátok Linuxba!

* Én egy indián vagyok. Minden indián hazudik.

Lehet, de nem 2.6.26 kernellel! - ez a Debian stable disztrójának a kernel verziója, alább nem akarom adni :|
Egyébként úgy tűnik, nagyon kifogtam. A kártyához kapott driver CD nem tartalmaz a nevezett chipnek pontosan megfelelő driver készletet (gondolom a régebbi chip verziók szoftverével is elmegy - legalábbis widowsban). A CD egyáltalán nem tartalmazza a Linux drivert, csak egy bugyuta leírást, hogy illeszd a 8250 és derivátumainak megfelelő drivert a régebbi chipekhez (először ezt próbáltam, persze nem működik). Végül, a gyártó sitejáról húztam le a jelenlegi legfrisebb driver forrását, azt gond nélkül lefordítottam és láss csodát ... a négy portból csak kettőt lát /dev/ttyD0 és /dev/ttyD1 :(
A kétszer annyiba kerülő (4800,- helyett 8200,-) Oxford chipsetes kártya gond nélkül illeszkedik és működik! - és a kínlódásomat ki fizeti ki?
Szerintem nem éri meg, ne dugjatok ilyet.

* Én egy indián vagyok. Minden indián hazudik.

Nem, 2.6.29-es kernel volt egy system rescue cd-vel, és pont azért indítottam el, hogy megnézzem megy-e a hardver, mert win alatt akármelyik drivert tettem fel hozzá, nem ismerte meg. Egy mezei 56K-s modem volt rajta, minicomba egy AT D-vel felhívtam magam, működött, így csak a wines driver lehet szar. :) Aztán persze már nem tudom melyikkel működött win alatt is.
--
Discover It - Have a lot of fun!

OK! Így értem, az általam piszkált kártya 4 soros + 1 párhuzamos - az utóbbi most nem érdekel. Amint betöltöm a (különben csont nélkül lefordított) modulokat, rögtön megjelenik a /dev/ttyD0 és /dev/ttyD1 de nincs D2 és D3! Ezek kellenek nekem!

* Én egy indián vagyok. Minden indián hazudik.

Mutatnal egy modinfot a gyarto altal adott driverrol ?

Amit nem lehet megirni assemblyben, azt nem lehet megirni.

^Sikerült jutnod valamire?

Hasonlo eszkozzel leirom az en tapasztalatomat. Tanulsagos. Nem Debian, CentOS 5.4. De szerintem ez mindegy.

MultiI/O 4xsoros PCI az eszköz neve. Serial 8250/16650 nem hajtja. Modult forditva es betöltve a 4 db leirasban igert portbol /dev/ttyD0 es /dev/ttyD1 mutatta magat. Ugy ertelmeztem, hogy a 4-bol 2. Es sehogy sem akart a tovabbi 2 db soros port megjelenni.

WinXP alatt jott a megvilagosodas, ugyanis 2fele soros portot telepitett a driver: 2 db HighSpeedSerial -nak nevezett(COM3 es COM5) es 2 db PciToISA -nak nevezett(COM4 es COM6) soros portokat. Karakterisztikajuk egyforma volt (baud, adatbit, paritas, stopbit).

Linux alatt is 2 modul fordul le: mcs9865 es mcs9865_isa. Be is toltodnek. De az mcs9865_isa csak akkor mutatja magat, akkor terit vissza ertekelheto kimenetet pl. setserial -g lekerdezessel, ha csatlakoztatva van eszkoz a soros kimenetekre (!). Es akkor van /dev/ttyS* es van UART: 16550 es van port:0x.... es IRQ ... En persze ugy kerestem a soros portokat, hogy nem logott rajtuk modem, vagy nullmodem kabel.

Vagyis a konkret PCI 4xSoros kartyan levo NetMOS9865 lapka leiras szerint 20 soros portot tud mutatni. Ebbol a kartya 4-et vezet ki. Ketfelekeppen. HighSpeedSerial es PciToIsa modokon. Windows alatt akkor is mutatja a portokat, ha nincs eszkoz vagy nullmodem kabel a kivezetesen, de linuxon csak akkor el a PciToIsa ha van rajta.

Es jelentem, hogy a 4x PCI soros kartyan logo mind a 4 modem kivaloan megy HylaFAX-szal.

Ha a /dev/ttyDX -et /dev/ttySY -on akarod latni, akkor szerintem egyszeruen egy a /dev/ttyDX-re mutato /dev/ttySY szimbolikus linken meg tudod oldani, csak a /dev/ttySY nagyobb legyen, mint a kernel Serial 8250/16550 altal foglalt soros eszkozok mutatoja.

Még mindig nem jutottam hozzá, hogy foglalkozzak vele! Kezdem magam úgy érezni mintha valami bürokrata volnék, ahol a jelmondat "az az akta amelyik nem intézi el önmagát, az nem érdemli meg hogy elintézzék".
Nagyon köszönöm az infót! A megoldás eszembe nem jutott volna, csodálkoztam a két driver modulon, de nem emlékszem, hogy ezek "hot plug" lennének, ilyet csak USB -ben láttam. Te hogy jöttél rá, hogy rá kell dugni valamit? Véletlen?

* Én egy indián vagyok. Minden indián hazudik.

Bocsanat. Lemaradtam a valaszrol. Teljesen veletlenul. Tobb oras - felesleges- kuzdelem utan (kulonbozo kiadasu modulokat forditgattam es toltam a kartya ala), majd ejszaka tavolbol jatszom meg vele felkialtassal, ratettem a modemeket a portokra, mert mar nem akartam visszazarandokolni a gephez, de ragaszkodtam ehhez a megoldashoz, indulas elott munka vegeztevel megneztem a dmesg es setserial kimeneteket es ott integettek a portok. Es a teljes dobbenet majd miutan jol korbe rohogtem magam elhataroztam, hogy irok ide HUPra neked, mert megoldaskeres kozben olvastam, hogy Te is judoztal az mcs9865 lapkaval. Tanulsagos nap volt.