Minicom

<small>Z PVwiki</small>

Obsah

Úvod

Pro práci se zařízeními na sériovém portu potřebujeme mít funkční nějaký komunikační program. V operačních systémech rodiny MS Windows známe Hyperterminál, v GNU/Linux je oblíbeným terminálem Minicom. Uživatelé GNU/Linux nemohou minicom používat, dokud uživatel root nevytvoří globální konfiguraci. Nezapomeňte ji vytvořit.

V Linuxu se porty označují jako /dev/ttySx, kde x je číslo sériového portu v DOSu minus 1. Tedy COM1 v DOSu je ttyS0 v Linuxu, COM3 v DOSu je ttyS2 v Linuxu. Nástrojem stty můžete interaktivně zobrazovat nebo měnit nastavení sériových portů, nástrojem setserial pak můžete nastavovat některé další parametry, přerušení a vstupně-výstupní adresy nestandardních portů.

Stáhněte si a nainstalujte balíček minicom. Spusťte jej příkazem

minicom -s

Názvy a čísla sériových zařízení

Zařízení v Linuxu (pokud nepoužíváte nový devfs) mají hlavní a vedlejší číslo. Sériové porty ttySx mají hlavní číslo 4. Můžete to vidět (spolu s vedlejšími čísly), když v adresáři /dev zadáte příkaz

$ ls -l /dev/ttyS*
$ ls -l /dev/ttyS*
0 crw-rw----   1 uucp dialout 4, 64 Oct 13 1997 /dev/ttyS0
0 crw-rw----   1 uucp dialout 4, 65 Jan 26 21:55 /dev/ttyS1
0 crw-rw----   1 uucp dialout 4, 66 Oct 13 1997 /dev/ttyS2
0 crw-rw----   1 uucp dialout 4, 67 Oct 13 1997 /dev/ttyS3

Pro srovnání přehled portů v MS Windows a GNU/Linux:

DOS    Linux        hl. č.   vedl. č.   adresa   devfs        devfs usb        acm modem
---------------------------------------------------------------------------------------------
COM1   /dev/ttyS0   4        64         3F8      /dev/tts/0   /dev/usb/tts/0   /dev/usb/acm/0
COM2   /dev/ttyS1   4        65         2F8      /dev/tts/1   /dev/usb/tts/1   /dev/usb/acm/1
COM3   /dev/ttyS2   4        66         3E8      /dev/tts/2   /dev/usb/tts/2   /dev/usb/acm/2
COM4   /dev/ttyS3   4        67         2E8      /dev/tts/3   /dev/usb/tts/3   /dev/usb/acm/3

Poznámka-Morpheus: Výchozí umístění seriových zařízení (zejm. USB) se může drobně lišit v závislosti na použité linuxové distribuci (staré devfs, nové udev, ...).

I když se nastavené hodnoty při vypnutí počítače ztratí, mohou být uloženy v konfiguračním skriptu a automaticky se obnovit při novém spuštění počítače. V novějších verzích se změny provedené programem setserial automaticky zapisují do konfiguračního souboru. Ve starších verzích se konfigurační soubor mění pouze explicitním zásahem.

Detekce portů

Než začnete porty detekovat programem setserial, vyzkoušejte scanport, který by vám měl říct, kde porty hledat. Tento program se pokusí odhadnout, co je za zařízení na různých adresách, nedetekuje ale přerušení těchto zařízení. Je to ale rychlý začátek. I když by mohl způsobit zablokování celého počítače, zatím se mi to ještě nestalo. Program scanport je součástí distribuce Debian a v jiných se neobjevuje. Se správnými parametry se program setserial pokusí detekovat sériový port na zadané adrese, ovšem tu adresu musíte uhodnout. Pokud jej necháte například detekovat port /dev/ttyS2, bude hledat pouze na adrese, kde by tento port měl normálně být (0x2f8). Řeknete-li mu, že je na jiné adrese, bude jej hledat tam.

Sériový port existuje, ale nelze jej nalézt

Pokud fyzické zařízení (například modem) vůbec nefunguje, je to obvykle proto, že je vypnuto a nemá přidělenu žádnou adresu (PnP zařízení neaktivováno), nebo je sice zapnuto, ale pracuje na jiné adrese, než si ovladač myslí, a proto s ním nekomunikuje. Zkontrolujte nastavení BIOSu a hlášení BIOSu při startu počítače. Máte-li modem na PCI sběrnici, zkuste lspci nebo scanpci. Pokud je na ISA sběrnici, zkuste pnpdump --dumpregs a přečtěte si Plug-and-Play-HOWTO.

Program scanport (Debian) projde všechny porty ISA sběrnice a může najít modem na neznámém portu. Na druhé straně může také počítač zhroutit. Pokud se přes port nic nepřenáší, může být problém ve špatně nastaveném přerušení. Spusťte setserial -g a zkontrolujte konflikty adres a přerušení.

Pokud dva porty používají stejnou adresu, automatická detekce najde pouze jeden port. Jsou-li porty PnP, neměla by taková situace nastat, může k ní ale dojít v případě, že jeden z portů není PnP. Pokud dvě zařízení sdílejí stejné adresy, může docházet prakticky k jakýmkoliv chybám.

Scanport

pokud porty nelze oscanovat, může být potíž v tom, že program scanport není nainstalován

root@catmanNB:/home/catman# scanport
Program 'scanport' není v současné době nainstalován.  Můžete jej nainstalovat napsáním:
apt-get install hwtools
Ujistěte se, že máte zapnutou komponentu 'universe'
bash: scanport: command not found
root@catmanNB:/home/catman# 

proto nainstalujeme

root@catmanNB:/home/catman# apt-get install hwtools
Čtu seznamy balíků... Hotovo
Vytvářím strom závislostí       
Čtení stavových informací... Hotovo
Instaluji balík hwtools.
(Čtu databázi ... nyní je nainstalováno 140337 souborů a adresářů.)
Rozbaluji hwtools (z .../hwtools_0.8-6_i386.deb) ...
Nastavuji balík hwtools (0.8-6) ...

a pak už scanujeme (redukovaný výpis )

root@catmanNB:/home/catman# scanport
The following devices are registered above 0x100:
      
       0x1 -> 0x1f7            f0-01f7 : ide0
       0x2f8 -> 0x2ff          serial
       0 -> 0xbfff             b800-b8ff : 8139too
       0xff -> 0xff0f          00-ff07 : ide0
       0xff -> 0xff0f          08-ff0f : ide1
and their i/o ports will not be scanned.

Nás zajímá adresa 02f8 podle tabulky nahoře je patrno, že se jedná o port ttyS1 (com2) a právě s ním budeme v Minicomu pracovat

Minicom

root@catmanNB:/home/catman# minicom -o

nastartovali jsme s defaultním profilem, ale ten musíme upravit pro náš počítač: ^AZ otevře menu - nejvíce nás zajímají volby

cOnfigure Minicom..O  - konfigurace minicomu
comm Parameters....P  - parametry portu /dev/ttyS2
local Echo on/off..E  - doporučeno povolit odezvu na psaní klávesnicí

v konfiguraci O nastavíme potřebné parametry a pak vše uložíme jako defaultní nastavení

Po správném nastavení můžeme připojit modem nebo třeba WRAP či routerboard kabelem nullmodem a vesele komunikovat

Jaké je aktuální nastavení modemu?

Profil modemu můžete zobrazit pomocí programu minicom. Je rozumné, aby v té době nepoužívaly port modemu žádné jiné procesy. Pokud už máte minicom pro použití s modemem nastaven, můžete na příkazovém řádku zadat minicom -o, čímž se program spustí bez obnovení uloženého profilu modemu. Pak příkazem AT&V zobrazíte profil modemu. Abyste minicom ukončili bez narušení aktuálního profilu, použijte příkaz q, který ukončí program bez resetu modemu.

Tento postup nemusí z různých důvodů fungovat. Pokud je modem nastaven tak, aby nevypisoval výsledkové kódy, nemusí vypsat ani vlastní profil. Pokud na portu modemu ve stejné době běží i jiný proces, můžete uvidět jen část profilu.

Pokud port modemu používají i další procesy a vy je zabijete, může dojít k resetu modemu a nemusíte uvidět původní profil. Stává se to, pokud zabijete proces getty (nebo jeho následníky login či bash) a máte nastaveno &D3. Zabitím procesu getty (nebo dalších) se shodí signál DTR a dojde k resetu modemu do iniciálního stavu. Abyste zabránili opětovnému spuštění procesu getty, zakomentujte jej v /etc/inittab, spusťte init q a teprve pak jej zabijte.

Odkazy

Externí odkazy

Osobní nástroje