LINUX.ORG.RU

[WCH352][LPT] Как заменить Kernel driver in use

 


0

1

Есть LPT контроллер на чипе WCH352. Этот чип может эмулировать как LPT, так и RS232. Ядро по дефолту подхатывает его как serial. Раньше его переубеждал вот такой скрипт.

#!/bin/sh
cd /lib/modules/$(ls /lib/modules/ | sort | tail -n1)/kernel/drivers/char
rmmod lp
cd /lib/modules/$(ls /lib/modules/ | sort | tail -n1)/kernel/drivers/parport
rmmod parport_pc.ko
insmod parport_pc.ko io=0x378,0xe880
cd /lib/modules/$(ls /lib/modules/ | sort | tail -n1)/kernel/drivers/char
insmod lp.ko
Сейчас он помогать перестал. Есть подозрение, что виновато в этом 3-е ядро. В интернете полно описаний для предыдущей проблемы (от которой этот скрипт и помогает), а вот этой не нашел ни одного.

Вывод lspci -v

07:00.0 Serial controller: Device 4348:5053 (rev 10) (prog-if 02 [16550])
	Subsystem: Device 4348:5053
	Flags: medium devsel, IRQ 16
	I/O ports at ec00 [size=8]
	I/O ports at e880 [size=8]
	Kernel driver in use: serial

Система - Ubuntu 11.10 x86_64, kernel 3.0.0-16-generic


Чтобы сделать rmmod, совсем необязательно делать cd в ту директорию, где этот модуль лежит - это про скрипт. Про модуль - serial уже зохавал устройство, попробуй перед insmod parport сделать rmmod serial.

tiandrey ★★★★★
()
Ответ на: комментарий от tiandrey
[1023227.544336] parport 0x378 (WARNING): CTR: wrote 0x0c, read 0xff
[1023227.544340] parport 0x378 (WARNING): DATA: wrote 0xaa, read 0xff
[1023227.544342] parport 0x378: You gave this address, but there is probably no parallel port there!
[1023227.544361] parport0: PC-style at 0x378, irq 0 [PCSPP,TRISTATE]
[1023227.544365] parport0: irq 0 in use, resorting to polled operation
[1023227.630267] parport1: PC-style at 0xe880, irq 0 [PCSPP,TRISTATE]
[1023227.630271] parport1: irq 0 in use, resorting to polled operation
[1023227.736555] lp0: using parport0 (polling).
[1023227.736606] lp1: using parport1 (polling).

Адрес 0х378 взят из манула, хз зачем он нужен. 0хе880 - из lspci.

Сейчас заменил в скрипте 0х378, на второй адрес из lspci и в dmesg получил следующее.

[1023541.505608] parport0: PC-style at 0xe880, irq 0 [PCSPP,TRISTATE]
[1023541.505611] parport0: irq 0 in use, resorting to polled operation
[1023541.519351] parport0: Printer, Hewlett-Packard HP LaserJet 1100
[1023541.521609] lp0: using parport0 (polling).
Т.е. принтер оно увидело, но больше его никак пока прицепить не получается. HPLIP его в упор не видит.

aleks13
() автор топика
Ответ на: комментарий от aleks13

Взлетело. HPLIP принтер так и не увидел, но да и фиг с ним. Главное, что печатает.

Для последователей - в скрипте надо заменить 0x378, на второй адрес из lspci -v. У меня работающий скрипт выглядит вот так.

#!/bin/sh
cd /lib/modules/$(ls /lib/modules/ | sort | tail -n1)/kernel/drivers/char
rmmod lp
cd /lib/modules/$(ls /lib/modules/ | sort | tail -n1)/kernel/drivers/parport
rmmod parport_pc.ko
insmod parport_pc.ko io=0xe880,0xec00
cd /lib/modules/$(ls /lib/modules/ | sort | tail -n1)/kernel/drivers/char
insmod lp.ko

Заменять там надо только секцию io=0xe880,0xec00, вместо e880 и ec00 подставляем адреса I/O ports из lspci -v.

aleks13
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.