From owner-freebsd-multimedia@FreeBSD.ORG Sun Jan 23 00:29:08 2011 Return-Path: Delivered-To: freebsd-multimedia@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 66048106564A; Sun, 23 Jan 2011 00:29:08 +0000 (UTC) (envelope-from nox@jelal.kn-bremen.de) Received: from smtp.kn-bremen.de (gelbbaer.kn-bremen.de [78.46.108.116]) by mx1.freebsd.org (Postfix) with ESMTP id 1134C8FC17; Sun, 23 Jan 2011 00:29:07 +0000 (UTC) Received: by smtp.kn-bremen.de (Postfix, from userid 10) id AB78F1E000D3; Sun, 23 Jan 2011 01:29:06 +0100 (CET) Received: from triton8.kn-bremen.de (noident@localhost [127.0.0.1]) by triton8.kn-bremen.de (8.14.4/8.14.3) with ESMTP id p0N0OqD8068143; Sun, 23 Jan 2011 01:24:52 +0100 (CET) (envelope-from nox@triton8.kn-bremen.de) Received: (from nox@localhost) by triton8.kn-bremen.de (8.14.4/8.14.3/Submit) id p0N0OqJZ068142; Sun, 23 Jan 2011 01:24:52 +0100 (CET) (envelope-from nox) From: Juergen Lock Date: Sun, 23 Jan 2011 01:24:51 +0100 To: freebsd-multimedia@FreeBSD.org Message-ID: <20110123002451.GA65567@triton8.kn-bremen.de> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit User-Agent: Mutt/1.5.21 (2010-09-15) Cc: hselasky@FreeBSD.org Subject: Using "LC Power LC-USB-DVBT" remote with vdr/webcamd (af9015.c patch) X-BeenThere: freebsd-multimedia@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Multimedia discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 Jan 2011 00:29:08 -0000 Hi! Someone on irc pointed me to the "remote=" module parameter for the dvb-usb-af9015 Linux driver so I tested it with this "LC Power LC-USB-DVBT" tuner I got for a little more than ¤ 20 and indeed, a value of 4 got the remote do something. [1] I then looked at the driver and found it has a table of device eprom checksums to assign a default remote, so I added mine: [2] http://people.freebsd.org/~nox/dvb/webcamd/patch-af9015.c.txt (patch also the end of this mail, it also has the pidfilter flag I needed for my other dvb-t tuner that I talked about here: http://lists.freebsd.org/pipermail/freebsd-multimedia/2010-December/011509.html ) This tuner's remote attaches as an usb keyboard sendig mostly digits and control characters, to use it with vdr on FreeBSD I did basically the same as I did for the (bigger) usb remote that I originally patched the vdr remote plugin for as I posted here: http://lists.freebsd.org/pipermail/freebsd-multimedia/2010-September/011240.html (and also noted in the remote plugin's pkg-descr in the vdr shar), i.e. I forced it to uhid(4) by adding a quirk UQ_KBD_IGNORE via usbconfig: usbconfig add_dev_quirk_vplh 0x15a4 0x9016 0 0xffff UQ_KBD_IGNORE and instead of unplugging it for a moment I then did an: usbconfig -d 5.3 reset (of course replace 5.3 with whatever bus/addr your tuner comes up at.) My vdr's /usr/local/etc/vdr/remote.conf already had the config for the other remote so with vdr stopped I backed that up, removed the lines starting with remote-uhid0, touch(1)'ed /usr/local/etc/vdr/channels.conf and then started vdr with '-Premote -h /dev/uhid0' added to its args, started vdr-sxfe and tried to configure the remote. It's credit-card size and doesn't have up/down/left/right/menu/ok and red/green/yellow/blue buttons so I had to use others for those functions and I skipped a lot of less important other buttons too, but at least it seems to work so far. (When I originally tested the remote I sometimes had a button `stuck on repeat' until i pressed another one but for some reason that hasn't happened anymore at least today...) I'll have to think more about a good mapping that makes the best of the existing buttons and uses all the remaining ones that I skipped, if anyone wants a remote.conf for this tuner I guess I should do that first. And as mentioned in the remote plugin's pkg-descr you may need to use an xorg.conf with Option "AutoAddDevices" "False" in Section "ServerFlags" (and possibly explicit InputDevice sections for keyboard and mouse) to stop xorg from grabbing /dev/uhid0 too. (Or maybe it also won't if you make sure vdr always starts before xorg, but I guess then you can't restart vdr or plug in the tuner later. Or it's also possible you can set some hald(1) config to make xorg ignore the remote...) Enjoy, :) Juergen [1] webcamd doesn't handle runtime module parameters yet(?) so if you want to do this on FreeBSD without my patch or with a different module parameter or tuner you'll have to look up the module_param_named() line in the driver source and set the variable named in the second arg appropriately, i.e. in this case look for: module_param_named(remote, dvb_usb_af9015_remote, int, 0644); and change the line static int dvb_usb_af9015_remote; to static int dvb_usb_af9015_remote = 4; [2] I also looked if I maybe should send the eprom checksum diff upstream to the Linux v4l-dvb folks but found they now seem to use a different git location: http://git.linuxtv.org/media_build.git and the remote stuff in there has changed a bit. Maybe I should look at this again later... And here comes the /usr/ports/multimedia/webcamd/files/patch-af9015.c : --- v4l-dvb/linux/drivers/media/dvb/dvb-usb/af9015.c.orig +++ v4l-dvb/linux/drivers/media/dvb/dvb-usb/af9015.c @@ -832,6 +836,9 @@ static const struct af9015_setup af9015_ { 0x9b7dc64e, ir_codes_af9015_table_mygictv, ARRAY_SIZE(ir_codes_af9015_table_mygictv), af9015_ir_table_mygictv, ARRAY_SIZE(af9015_ir_table_mygictv) }, + { 0x5d49e3db, + ir_codes_af9015_table_digittrade, ARRAY_SIZE(ir_codes_af9015_table_digittrade), + af9015_ir_table_digittrade, ARRAY_SIZE(af9015_ir_table_digittrade) }, { } }; @@ -1465,6 +1472,9 @@ static struct dvb_usb_device_properties .adapter = { { .caps = DVB_USB_ADAP_HAS_PID_FILTER | +#if 1 + DVB_USB_ADAP_NEED_PID_FILTERING | +#endif DVB_USB_ADAP_PID_FILTER_CAN_BE_TURNED_OFF, .pid_filter_count = 32,