DigitalNow TinyTwin DVB-T tuner (remote control) issues.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello!

I'm trying to determine why the remote control included with my DigitalNow 
TinyTwin DVB-T tuner connected to a USB port on an Abit IC7-MAX3 motherboard is 
not working properly and am looking for some help to solve the problem. I 
believe the problem may be in the PCI/interrupt handling region, however, I see 
different behaviour between uhci_hcd and ehci_hcd so I thought I should start 
there.

The tuner is a USB2 device with two interfaces, the interface corresponding to 
the remote is correctly identified as class HID (keyboard) and uses the usbhid 
driver.

I believe the main issue is that pressing and releasing a key on the remote 
generates a key press but the key release arrives some time later. With uhci_hcd 
this is ~0.27-0.3s after the key press while with ehci_hcd it is ~17.4s (on 
Windows the usb sniff appears to show ~0.09s). In both cases it leads to auto-
repeating with the default usbhid driver. Another issue seems to be that 
pressing any key after the first key press but before the corresponding key 
release appears as the original key pressed a second time, leading to missed key 
presses. It's obviously much easier to see this with 17.4s between key press and 
release but is still easily possible with 0.272s.

With both uhci_hcd and ehci_hcd I can see that the probe function used is 
usb_hcd_pci_probe in drivers/usb/core/hcd-pci.c, this calls usb_add_hcd in 
drivers/usb/core/hcd.c which calls request_irq using usb_hcd_irq as the function 
to call on an interrupt. The drivers register functions ehci_irq and uhci_irq to 
handle the interrupts from usb_hcd_irq. I've placed printk's in the relevant 
files to track the delay between press and release which seems to be before 
usb_hcd_irq is called, leading me to believe there is possibly a problem in the 
PCI/interrupt handling region.

I'm wondering if the way interrupts are initialised in usb_hcd_pci_probe (due to 
flag HCD_MEMORY it's request_mem_region/ioremap_nocache for ehci_hcd and 
request_region for uhci_hcd) could be causing differences between uhci_hcd and 
ehci_hcd? Could the value of bInterval for the interrupt endpoint being 
interpreted differently for uhci_hcd and ehci_hcd (as per the spec) have an 
effect? The value is 16 which corresponds to an interval of 16ms for uhci_hcd 
and 4096ms for ehci_hcd. Also, usbmon seems to show 8192 for the interval with 
ehci_hcd.

Or is all of this a problem further down the chain with PCI and/or interrupts?

Any help would be appreciated, thanks in advance!

Stuart

(UHCI) cat /sys/kernel/debug/usbmon/1u:

d3499880 1067303301 C Ii:1:002:3 0:16 8 = 00001e00 00000000
d3499880 1067303337 S Ii:1:002:3 -115:16 8 <
d3499880 1067575252 C Ii:1:002:3 0:16 8 = 00000000 00000000
d3499880 1067575286 S Ii:1:002:3 -115:16 8 <

(EHCI) cat /sys/kernel/debug/usbmon/1u:

d35d4180 113126421 C Ii:1:002:3 0:8192 8 = 00001e00 00000000
d35d4180 113126459 S Ii:1:002:3 -115:8192 8 <
d35d4180 130531486 C Ii:1:002:3 0:8192 8 = 00000000 00000000
d35d4180 130531522 S Ii:1:002:3 -115:8192 8 <

Windows SniffUSB summary:

[369218 ms] <<< URB 13 coming back <<< 00000000: 00 00 1e 00 00 00 00 00
[369218 ms] <<< URB 14 coming back <<< 00000000: 00 00 1e 00 00 00 00 00
[369308 ms] <<< URB 15 coming back <<< 00000000: 00 00 00 00 00 00 00 00

lspci:

00:00.0 Host bridge: Intel Corporation 82875P/E7210 Memory Controller Hub (rev 
02)
00:01.0 PCI bridge: Intel Corporation 82875P Processor to AGP Controller (rev 
02)
00:03.0 PCI bridge: Intel Corporation 82875P/E7210 Processor to PCI to CSA 
Bridge (rev 02)
00:1d.0 USB Controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI 
Controller #1 (rev 02)
00:1d.1 USB Controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI 
Controller #2 (rev 02)
00:1d.2 USB Controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI 
Controller #3 (rev 02)
00:1d.3 USB Controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB UHCI 
Controller #4 (rev 02)
00:1d.7 USB Controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB2 EHCI 
Controller (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev c2)
00:1f.0 ISA bridge: Intel Corporation 82801EB/ER (ICH5/ICH5R) LPC Interface 
Bridge (rev 02)
00:1f.1 IDE interface: Intel Corporation 82801EB/ER (ICH5/ICH5R) IDE Controller 
(rev 02)
00:1f.2 IDE interface: Intel Corporation 82801EB (ICH5) SATA Controller (rev 02)
00:1f.3 SMBus: Intel Corporation 82801EB/ER (ICH5/ICH5R) SMBus Controller (rev 
02)
00:1f.5 Multimedia audio controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) 
AC'97 Audio Controller (rev 02)
01:00.0 VGA compatible controller: nVidia Corporation NV18 [GeForce4 MX 440 AGP 
8x] (rev a2)
02:01.0 Ethernet controller: Intel Corporation 82547GI Gigabit Ethernet 
Controller
03:02.0 FireWire (IEEE 1394): Texas Instruments TSB43AB23 IEEE-1394a-2000 
Controller (PHY/Link)
03:03.0 RAID bus controller: Silicon Image, Inc. SiI 3114 [SATALink/SATARaid] 
Serial ATA Controller (rev 02)
03:05.0 Communication controller: Conexant HSF 56k HSFi Modem (rev 01)

(UHCI) cat /proc/bus/usb/devices:

T:  Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  2 Spd=12  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=13d3 ProdID=3226 Rev= 2.00
S:  Manufacturer=Afatech
S:  Product=DVB-T 2
S:  SerialNumber=010101010600001
C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 4 Cls=ff(vend.) Sub=00 Prot=00 Driver=dvb_usb_af9015
E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=84(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=85(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=01 Driver=usbhid
E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=16ms

(EHCI) cat /proc/bus/usb/devices:

T:  Bus=01 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  2 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=13d3 ProdID=3226 Rev= 2.00
S:  Manufacturer=Afatech
S:  Product=DVB-T 2
S:  SerialNumber=010101010600001
C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 4 Cls=ff(vend.) Sub=00 Prot=00 Driver=dvb_usb_af9015
E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=01 Driver=usbhid
E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=4096ms


--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux