Jądro Linux-a (<=2.1.32), zakładając, że wkompilowałeś lub załadowałeś
urządzenie lp (polecenie cat /proc/devices powinno
pokazać urządzenie lp), dostarcza jedno lub więcej urządzeń
/dev/lp0, /dev/lp1 i /dev/lp2. Nie są
one kojarzone dynamicznie, ale są one na stałe przypisane
konkretnym adresom I/O. Oznacza to, że twoja pierwsza drukarka może
być na lp0, albo lp1 w zależności od sprzętu. Spróbuj
obu. ;)
Kilku użytkowników zgłosiło, że ich dwukierunkowe porty lp nie zostają wykryte jeśli używają starszego, jednokierunkowego kabla. Sprawdź czy masz przyzwoity kabel.
Na danym porcie nie można mieć na raz sterowników plip oraz lp. Ale można załadować jeden albo drugi sterownik w każdej chwili; ręcznie albo przez kerneld przy jądrze w wersji 2.x.x (lub późniejsze 1.3.x). Jeśli dokładnie ustawisz przerwania itp., to możesz przypuszczalnie mieć plip na jednym porcie, a lp na drugim. Jedna osoba zrobiła tak, przez edycję sterowników; z niecierpliwością oczekuję osoby, która zrobiłaby to tylko przy użyciu argumentów z linii poleceń.
Jest takie narzędzie zwane tunelp, przy pomocy którego "root" może ustawiać przerwania i inne opcje na urządzeniu lp.
Jeśli urządzenie lp jest wbudowane w jądro w wersji 1.3.x lub
wyższej, to możesz przekazać parametr lp= do jądra, w którym
możesz ustawić przerwanie, adres itp.
Jeśli sterownik lp jest wbudowany w jądro, to możesz użyć parametru LILO/LOADLIN, aby ustawić adres portu i przerwanie, których sterownik będzie używał. Składnia: lp=port0[,irq0[,port1[,irq1[,port2[,irq2]]]]] Na przykład: lp=0x378,0 lub lp=0x278,5,0x378,7 ** Zauważ, że jeśli używasz tego parametru, to musisz podać *wszystkie* porty, których będziesz używać - nie ma wartości domyślnych. Możesz wyłączyć wbudowany sterownik parametrem lp=0.
Jeśli ładujesz sterownik drukarki jako moduł w wersji jądra 2.x.x
lub późnej 1.3.x, to możesz podać przerwanie i port jako parametr w
linii poleceń przy insmod (albo w pliku
/etc/conf.modules, żeby działało także dla
kerneld). Parametry to: io=port0,port1,port2 i
irq=irq0,irq1,irq2. Więcej informacji znajdziesz w podręczniku
systemowym man na stronie dotyczącej insmod.
**Dla tych, którzy (jak ja) nigdy nie mogą znaleźć standardowego portu kiedy go potrzeba, to są one takie jak w podanym wyżej drugim przykładzie. Drugi port (lp0) jest pod adresem 0x3bc. Nie mam pojęcia jakiego przerwania zwykle używa.
Kod źródłowy linux-owego sterownika portu równoległego jest w pliku /usr/src/linux/drivers/char/lp.c
Począwszy od jądra w wersji 2.1.33 (dostępne także jako łata dla jądra 2.0.30), urządzenie lp jest po prostu klientem nowego urządzenia parport. Dodanie urządzenia parport naprawia pewną ilość błędów, które dręczyły poprzedni sterownik urządzenia lp - może ono wpółdzielić port z innym urządzeniem, przypisuje dynamicznie dostępne porty równoległe numerom urządzeń zamiast wymuszać z góry narzuconą komunikację pomiędzy adresami I/O a numerami portów i tak dalej.
Więcej szczegółów na temat parport podam kiedy sam znajdę się w sytuacji kiedy będę tego używał. A w międzyczasie możesz przeczytać plik Documentation/parport.txt w drzewie ze źródłami jądra albo zajrzyj na stronę parport.
Urządzenia szeregowe pod Linux-em zwykle nazywają się
/dev/ttyS1 lub podobnie. Narzędzie
stty pozwala na interaktywne przeglądanie lub określanie
ustawień dla portu szeregowego;
setserial
pozwoli ci na kontrolowanie kilku rozszerzonych właściwości oraz na
skonfigurowanie IRQ i adresów I/O dla niestandardowych
portów. Więcej na temat portów szeregowych znajdziesz w
Serial-HOWTO dostępnym także w języku polskim.
Jeśli używasz wolnej drukarki szeregowej z kontrolą przepływu (flow control), może się okazać, że niektóre z twoich wydruków są obcinane. Może być to spowodowane zachowaniem portu szeregowego, który wyrzuca wszystkie znaki ze swojego bufora po 30 sekundach od momentu zamknięcia portu. W buforze może się znajdować do 4096 znaków a jeśli twoja drukarka używa kontroli przepływu i jest wystarczająco wolna, tak że nie może przyjąć wszystkich 4096 znaków z portu w ciągu 30 sekund, po tym jak oprogramowanie drukujące zakmnęło port, to końcowa zawartość bufora zostanie utracona. Jeśli w wyniku polecenia cat plik > /dev/ttyS2 pojawia się cały wydruk dla krótkich plików, a dłuższe są obcinane, to to może być twój problem.
Okres 30 sekund może zostać zmieniony poprzez opcję "closing_wait" programu setserial (wersja 2.12 i późniejsze). Porty szeregowe maszyny są z reguły inicjowane poprzez odwołanie do setserial w pliku startowym rc.serial. Odwołanie do portu szeregowego drukarki może być zmodyfikowane, tak aby ustawić closing_wait w tym samym czasie kiedy ustawia inne parametry tego portu.