Hi Nathan, On 16/08/2019 13.18, Nathan Royce wrote: > Right up front, I must say I do NOT have a Hauppauge tuner. I think > it's like maybe Mygica/Geniatech: > Bus 002 Device 004: ID 05e1:0400 Syntek Semiconductor Co., Ltd > > Whenever I update my kernel, I edit the > ./drivers/media/usb/au0828/au0828-cards.c file adding an entry for my > 0x400 device. > I've been doing it for years and it's been working fine... until now... > > ***** > Aug 16 12:07:20 computerName kernel: usb 2-2.3: Tuner is busy. Error -19 > <...18 more repeated entries...> > Aug 16 12:07:20 computerName kernel: usb 2-2.3: Tuner is busy. Error -19 > Aug 16 12:07:10 computerName tvheadend[3276]: main: Log started > ***** > "w_scan" behaves the same way. > > ***** I don't have a "woodbury", but I have a Hauppauge 950Q sitting around and tested it on latest mainline kernel. w_scan is ok and streaming is fine. There's no unexpected errors. The 950Q uses the same au0828 bridge and au8522 demod as woodbury, but a different tuner. Your problem wouldn't appear to be a general au0828 issue. You might have to check out git bisect. That will be the quickest way to get to the bottom, if you've got points A and B, and are building/running your own kernel. Cheers, Brad > $ modprobe au0828 > Aug 16 12:52:52 computerName kernel: videodev: Linux video capture > interface: v2.00 > Aug 16 12:52:52 computerName kernel: au0828: au0828_init() Debugging is enabled > Aug 16 12:52:52 computerName kernel: au0828: au0828 driver loaded > Aug 16 12:52:52 computerName kernel: au0828: au0828_usb_probe() vendor > id 0x5e1 device id 0x400 ifnum:0 > Aug 16 12:52:52 computerName kernel: au0828: au0828_gpio_setup() > Aug 16 12:52:52 computerName kernel: au0828: au0828_i2c_register() > Aug 16 12:52:52 computerName kernel: au0828: i2c bus registered > Aug 16 12:52:52 computerName kernel: au0828: au0828_card_setup() > Aug 16 12:52:52 computerName kernel: tveeprom: Encountered bad packet > header [20]. Corrupt or not a Hauppauge eeprom. > Aug 16 12:52:52 computerName kernel: au0828: hauppauge_eeprom: > warning: unknown hauppauge model #0 > Aug 16 12:52:52 computerName kernel: au0828: hauppauge_eeprom: > hauppauge eeprom: model=0 > Aug 16 12:52:52 computerName kernel: au0828: au0828_analog_register > called for intf#0! > Aug 16 12:52:52 computerName kernel: au0828: au0828_dvb_register() > Aug 16 12:52:52 computerName kernel: au8522 7-0047: creating new instance > Aug 16 12:52:52 computerName kernel: tda18271 7-0060: creating new instance > Aug 16 12:52:52 computerName kernel: tda18271: TDA18271HD/C2 detected @ 7-0060 > Aug 16 12:52:53 computerName kernel: au0828: dvb_register() > Aug 16 12:52:53 computerName kernel: dvbdev: DVB: registering new > adapter (au0828) > Aug 16 12:52:53 computerName kernel: usb 2-2.3: DVB: registering > adapter 0 frontend 0 (Auvitek AU8522 QAM/8VSB Frontend)... > Aug 16 12:52:53 computerName kernel: dvbdev: dvb_create_media_entity: > media entity 'Auvitek AU8522 QAM/8VSB Frontend' registered. > Aug 16 12:52:53 computerName kernel: dvbdev: dvb_create_media_entity: > media entity 'dvb-demux' registered. > Aug 16 12:52:53 computerName kernel: au0828: Registered device AU0828 > [Hauppauge Woodbury] > Aug 16 12:52:53 computerName kernel: usbcore: registered new interface > driver au0828 > ***** > The "eeprom" thing has never been an issue with regard to my tuner > working. It still worked in spite of it. > > It's odd because: > ***** > $ lsmod | grep au0828 > au0828 86016 0 > tveeprom 28672 1 au0828 > dvb_core 176128 1 au0828 > v4l2_common 20480 1 au0828 > videobuf2_vmalloc 20480 2 dvb_core,au0828 > videobuf2_v4l2 28672 1 au0828 > videobuf2_common 61440 3 videobuf2_v4l2,dvb_core,au0828 > videodev 253952 4 > v4l2_common,videobuf2_v4l2,videobuf2_common,au0828 > rc_core 61440 1 au0828 > media 61440 6 > videodev,snd_usb_audio,videobuf2_v4l2,dvb_core,videobuf2_common,au0828 > > $ ls -la /dev/dvb/adapter0/ > total 0 > drwxr-xr-x 2 root root 120 Aug 16 12:01 . > drwxr-xr-x 3 root root 60 Aug 16 12:01 .. > crw-rw----+ 1 root video 212, 4 Aug 16 12:01 demux0 > crw-rw----+ 1 root video 212, 5 Aug 16 12:01 dvr0 > crw-rw----+ 1 root video 212, 3 Aug 16 12:01 frontend0 > crw-rw----+ 1 root video 212, 7 Aug 16 12:01 net0 > ***** > > The previous kernel version I was on that worked was 5.1.15. > I just reverted back to the previous version and it's working again. > I don't know what broke and where, between the versions. > > I saw https://lkml.org/lkml/2019/1/21/1020 but this is back in January > so I don't know if something was more recently applied to au0828 that > makes use of the API. > "lsof" didn't show anything related to "/dev/dvb" being used. > > Oh neat! Someone posted a neat git feature which I tried and I get: > ***** > $ git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset > %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative > v5.1.15..v5.2.8 drivers/media/usb/au0828/ > * be50f19fee84 - media: au0828: fix null dereference in error path (12 days ago) > * c942fddf8793 - treewide: Replace GPLv2 boilerplate/reference with > SPDX - rule 157 (3 months ago) > * 16216333235a - treewide: Replace GPLv2 boilerplate/reference with > SPDX - rule 1 (3 months ago) > * ec8f24b7faaf - treewide: Add SPDX license identifier - > Makefile/Kconfig (3 months ago) > * 14340de506c9 - media: prefix header search paths with $(srctree)/ (3 > months ago) > * f604f0f5afb8 - media: au0828: stop video streaming only when last > user stops (4 months ago) > * 898bc40bfcc2 - media: au0828: Fix NULL pointer dereference in > au0828_analog_stream_enable() (4 months ago) > * 383b0e5b6ebb - media: au0828: fix enable and disable source audio > and video inconsistencies (4 months ago) > * 812658d88d26 - media: change au0828 to use Media Device Allocator > API (4 months ago) > * b60a5b8dcf49 - media: Kconfig files: use the right help coding style > (5 months ago) > * f712e5358d43 - media: au0828: minor fix to a misleading comment in > _close() (5 months ago) > ***** > Note the 812658d88d26 commit. > So if I did the git command correctly, then it WAS added between these versions. > Any thoughts on if it is broken or if I can hack in a fix to force it > to ignore it being thought as being busy?