site  contact  subhomenews

PcTel, ESS modem modules conflict

October 28, 2010 — BarryK
Testing the latest Wary with 2.6.31.14 kernel and all the modem drivers. On my PC with PcTel modem card, I was surprised when dialup failed.

/var/log/messages:

Oct 29 07:20:01 puppypc user.info kernel: pctel_hw(155): PCTel hardware driver version 0.9.7-9-rht-9 for PCT789

Oct 29 07:20:01 puppypc user.info kernel: linmodem(1299): linmodem v0.1 loaded
Oct 29 07:20:01 puppypc user.err kernel: esscom_hw: exports duplicate symbol put_uart_dlm (owned by pctel_hw)


Loads pctel_hw.ko, then linmodem.ko, then tries to load esscom_hw.ko. This causes a conflict. Looking at the hardware:

01:05.0 Multimedia audio controller [0401]: ESS Technology ES1988 Allegro-1 [125d:1988] (rev 12)

01:08.0 Multimedia audio controller [0401]: Creative Labs SB Live! EMU10k1 [1102:0002] (rev 08)
01:08.1 Input device controller [0980]: Creative Labs SB Live! Game Port [1102:7002] (rev 08)
01:0a.0 Modem [0703]: PCTel Inc HSP MicroModem 56 [134d:7897] (rev 02)


The ESS audio controller causes esscom_hw.ko to load, but this is a "false positive". Ok, I will blacklist esscom.ko (of which esscom_hw.ko and linmodem.ko are dependents) -- well, I put both esscom and esscom_hw into SKIPLIST variable in /etc/rc.d/MODULESCONFIG, but it still tries to load. So, what is going on here?

Well, the next thing to do is hide the ess modules. I renamed them with .koHIDE and ran depmod and rebooted. This time /var/log/messages looks good:

Oct 29 08:09:00 puppypc user.info kernel: pctel_hw(155): PCTel hardware driver version 0.9.7-9-rht-9 for PCT789

Oct 29 08:09:00 puppypc user.info kernel: pctel(481): pctel v0.1 loaded
Oct 29 08:09:00 puppypc user.info kernel: pctel_pci(726): device 134d:7897 is grabbed by driver serial: try to release
Oct 29 08:09:00 puppypc user.info kernel: pctel_hw 0000:01:0a.0: found PCI INT A -> IRQ 11
Oct 29 08:09:00 puppypc user.info kernel: pctel_pci(233): PCTel device[0000:01:0a.0](0x50) found 134d:7897 (rev 02), iobase=0x1400, irq=11.
Oct 29 08:09:00 puppypc user.info kernel: pctel_pci(609): Setup PCI port: port 0x1400, irq 11, type 0, membase (null), ops (null)
Oct 29 08:09:00 puppypc user.info kernel: ttyS_PCTEL0 at I/O 0x1400 (irq = 11) is a PCTel


...yep, it works, I am online using the PcTel modem right now.

Note that the PcTel and ESS drivers both use linmodem.ko. It gets created in both source packages, but I only put the one from the PcTel source pkg into Puppy -- which the ESS driver developer assured me was ok as he says they are identical.

Comments

/etc/init.d/start_cpu_freq
Username: Iguleder
Barry, can you wrap this file inside [ "`lsmod | grep battery`" != "" ] or any other check, so it affects only laptops? If you have a desktop computer you want it to be fast and probably don't care much about power consumption.


Tags: wary