Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 24 Aug 2010 22:21:18 +0200
From:      Juergen Lock <nox@jelal.kn-bremen.de>
To:        Hans Petter Selasky <hselasky@freebsd.org>
Cc:        me@janh.de, kde@freebsd.org, Juergen Lock <nox@jelal.kn-bremen.de>, freebsd-multimedia@freebsd.org, Joe Marcus Clarke <marcus@freebsd.org>, gnome@freebsd.org
Subject:   Re: kaffeine-1.0 and webcamd based DVB-T?
Message-ID:  <20100824202118.GA38687@triton8.kn-bremen.de>
In-Reply-To: <201008230914.30762.hselasky@freebsd.org>
References:  <4C66C4BC.4040504@janh.de> <20100820180648.GA90683@triton8.kn-bremen.de> <4C71A635.6070205@freebsd.org> <201008230914.30762.hselasky@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Aug 23, 2010 at 09:14:30AM +0200, Hans Petter Selasky wrote:
> > > 
> > >  I have Cc'd hps, maybe he has an idea how to get the device index
> > > 
> > > out of a running webcamd for hal to use... (maybe webcamd should
> > > also do a setproctitle()?)
> > 
> > Actually, I'd prefer if there was a file or socket from which I could
> > read to get this data.  hps, is this doable?  That is, could I have a
> > file or socket that would allow me to map a USB bus/addr to a video (or
> > dvb) device ID?
> 
> I think something like this has been discussed before, that perhaps webcamd, 
> when it is ready updates hald, if present in the system.
> 
> Could you provide me the snprintf() I need and where to send it?

Ok I just got the new kaffeine working for direct dvb (i.e. without
xvdr://) with both the dvb-s2 and dvb-t tuners by invoking
hal-device --add for each dvb device node like below.  (well,
ignoring audio issues on dvb-s2 h264 channels but those can't have
anything to do with hal...)

 So it seems you can take the udi name that hal uses for the device
(or is that always 'usb_device_<id>_<id>_noserial'?), add a string
to it like '_dvb_<incremented>', use that as arg to 'hal-device --add',
and then give that process mostly static info like mine on stdin
where only dvb.device (the device node) and info.parent (the original
udi name) vary:  (Linux also adds linux.device_file, linux.hotplug_type,
linux.subsystem, and linux.sysfs_path as you can see in my Linux
lshal output earlier in this thread,

	http://lists.freebsd.org/pipermail/freebsd-multimedia/2010-August/011203.html

but it seems at least kaffeine doesn't need those.)

#! /bin/sh
# add PCTV 452e Sat HDTV Pro USB to hal as /dev/dvb/adapter0
hal-device --add usb_device_2304_21f_noserial_dvb_0 <<EOF
dvb.device = '/dev/dvb/adapter0/demux0'  (string)
info.capabilities = {'dvb'} (string list)
info.category = 'dvb'  (string)
info.parent = '/org/freedesktop/Hal/devices/usb_device_2304_21f_noserial'  (string)
info.product = 'DVB Device'  (string)
info.subsystem = 'dvb'  (string)
EOF
hal-device --add usb_device_2304_21f_noserial_dvb_1 <<EOF
dvb.device = '/dev/dvb/adapter0/dvr0'  (string)
info.capabilities = {'dvb'} (string list)
info.category = 'dvb'  (string)
info.parent = '/org/freedesktop/Hal/devices/usb_device_2304_21f_noserial'  (string)
info.product = 'DVB Device'  (string)
info.subsystem = 'dvb'  (string)
EOF
hal-device --add usb_device_2304_21f_noserial_dvb_2 <<EOF
dvb.device = '/dev/dvb/adapter0/frontend0'  (string)
info.capabilities = {'dvb'} (string list)
info.category = 'dvb'  (string)
info.parent = '/org/freedesktop/Hal/devices/usb_device_2304_21f_noserial'  (string)
info.product = 'DVB Device'  (string)
info.subsystem = 'dvb'  (string)
EOF

 and

#! /bin/sh
# add MSI DIGIVOX Duo to hal as /dev/dvb/adapter8 and /dev/dvb/adapter9
hal-device --add usb_device_1462_8801_noserial_dvb_0 <<EOF
dvb.device = '/dev/dvb/adapter8/demux0'  (string)
info.capabilities = {'dvb'} (string list)
info.category = 'dvb'  (string)
info.parent = '/org/freedesktop/Hal/devices/usb_device_1462_8801_noserial'  (string)
info.product = 'DVB Device'  (string)
info.subsystem = 'dvb'  (string)
EOF
hal-device --add usb_device_1462_8801_noserial_dvb_1 <<EOF
dvb.device = '/dev/dvb/adapter8/dvr0'  (string)
info.capabilities = {'dvb'} (string list)
info.category = 'dvb'  (string)
info.parent = '/org/freedesktop/Hal/devices/usb_device_1462_8801_noserial'  (string)
info.product = 'DVB Device'  (string)
info.subsystem = 'dvb'  (string)
EOF
hal-device --add usb_device_1462_8801_noserial_dvb_2 <<EOF
dvb.device = '/dev/dvb/adapter8/frontend0'  (string)
info.capabilities = {'dvb'} (string list)
info.category = 'dvb'  (string)
info.parent = '/org/freedesktop/Hal/devices/usb_device_1462_8801_noserial'  (string)
info.product = 'DVB Device'  (string)
info.subsystem = 'dvb'  (string)
EOF
hal-device --add usb_device_1462_8801_noserial_dvb_3 <<EOF
dvb.device = '/dev/dvb/adapter9/demux0'  (string)
info.capabilities = {'dvb'} (string list)
info.category = 'dvb'  (string)
info.parent = '/org/freedesktop/Hal/devices/usb_device_1462_8801_noserial'  (string)
info.product = 'DVB Device'  (string)
info.subsystem = 'dvb'  (string)
EOF
hal-device --add usb_device_1462_8801_noserial_dvb_4 <<EOF
dvb.device = '/dev/dvb/adapter9/dvr0'  (string)
info.capabilities = {'dvb'} (string list)
info.category = 'dvb'  (string)
info.parent = '/org/freedesktop/Hal/devices/usb_device_1462_8801_noserial'  (string)
info.product = 'DVB Device'  (string)
info.subsystem = 'dvb'  (string)
EOF
hal-device --add usb_device_1462_8801_noserial_dvb_5 <<EOF
dvb.device = '/dev/dvb/adapter9/frontend0'  (string)
info.capabilities = {'dvb'} (string list)
info.category = 'dvb'  (string)
info.parent = '/org/freedesktop/Hal/devices/usb_device_1462_8801_noserial'  (string)
info.product = 'DVB Device'  (string)
info.subsystem = 'dvb'  (string)
EOF

 After that lshal has this about them:

udi = '/org/freedesktop/Hal/devices/usb_device_1462_8801_noserial'
  info.bus = 'usb_device'  (string)
  info.parent = '/org/freedesktop/Hal/devices/usb_device_0_0_noserial_4'  (string)
  info.product = 'DVB-T 2'  (string)
  info.subsystem = 'usb_device'  (string)
  info.udi = '/org/freedesktop/Hal/devices/usb_device_1462_8801_noserial'  (string)
  info.vendor = 'Afatech'  (string)
  usb_device.bus_number = 5  (0x5)  (int)
  usb_device.can_wake_up = false  (bool)
  usb_device.configuration = ''  (string)
  usb_device.configuration_value = 1  (0x1)  (int)
  usb_device.device_class = 0  (0x0)  (int)
  usb_device.device_protocol = 0  (0x0)  (int)
  usb_device.device_revision_bcd = 512  (0x200)  (int)
  usb_device.device_subclass = 0  (0x0)  (int)
  usb_device.is_self_powered = false  (bool)
  usb_device.level_number = 2  (0x2)  (int)
  usb_device.max_power = 500  (0x1f4)  (int)
  usb_device.num_configurations = 1  (0x1)  (int)
  usb_device.num_interfaces = 1  (0x1)  (int)
  usb_device.num_ports = 0  (0x0)  (int)
  usb_device.port_number = 3  (0x3)  (int)
  usb_device.product = 'DVB-T 2'  (string)
  usb_device.product_id = 34817  (0x8801)  (int)
  usb_device.serial = ''  (string)
  usb_device.speed = 480.0 (480) (double)
  usb_device.speed_bcd = 294912  (0x48000)  (int)
  usb_device.vendor = 'Afatech'  (string)
  usb_device.vendor_id = 5218  (0x1462)  (int)
  usb_device.version = 2.0 (2) (double)

udi = '/org/freedesktop/Hal/devices/usb_device_1462_8801_noserial_dvb_5'
  dvb.device = '/dev/dvb/adapter9/frontend0'  (string)
  info.capabilities = {'dvb'} (string list)
  info.category = 'dvb'  (string)
  info.parent = '/org/freedesktop/Hal/devices/usb_device_1462_8801_noserial'  (string)
  info.product = 'DVB Device'  (string)
  info.subsystem = 'dvb'  (string)
  info.udi = '/org/freedesktop/Hal/devices/usb_device_1462_8801_noserial_dvb_5'  (string)

udi = '/org/freedesktop/Hal/devices/usb_device_1462_8801_noserial_dvb_4'
  dvb.device = '/dev/dvb/adapter9/dvr0'  (string)
  info.capabilities = {'dvb'} (string list)
  info.category = 'dvb'  (string)
  info.parent = '/org/freedesktop/Hal/devices/usb_device_1462_8801_noserial'  (string)
  info.product = 'DVB Device'  (string)
  info.subsystem = 'dvb'  (string)
  info.udi = '/org/freedesktop/Hal/devices/usb_device_1462_8801_noserial_dvb_4'  (string)

udi = '/org/freedesktop/Hal/devices/usb_device_1462_8801_noserial_dvb_3'
  dvb.device = '/dev/dvb/adapter9/demux0'  (string)
  info.capabilities = {'dvb'} (string list)
  info.category = 'dvb'  (string)
  info.parent = '/org/freedesktop/Hal/devices/usb_device_1462_8801_noserial'  (string)
  info.product = 'DVB Device'  (string)
  info.subsystem = 'dvb'  (string)
  info.udi = '/org/freedesktop/Hal/devices/usb_device_1462_8801_noserial_dvb_3'  (string)

udi = '/org/freedesktop/Hal/devices/usb_device_1462_8801_noserial_dvb_2'
  dvb.device = '/dev/dvb/adapter8/frontend0'  (string)
  info.capabilities = {'dvb'} (string list)
  info.category = 'dvb'  (string)
  info.parent = '/org/freedesktop/Hal/devices/usb_device_1462_8801_noserial'  (string)
  info.product = 'DVB Device'  (string)
  info.subsystem = 'dvb'  (string)
  info.udi = '/org/freedesktop/Hal/devices/usb_device_1462_8801_noserial_dvb_2'  (string)

udi = '/org/freedesktop/Hal/devices/usb_device_1462_8801_noserial_dvb_1'
  dvb.device = '/dev/dvb/adapter8/dvr0'  (string)
  info.capabilities = {'dvb'} (string list)
  info.category = 'dvb'  (string)
  info.parent = '/org/freedesktop/Hal/devices/usb_device_1462_8801_noserial'  (string)
  info.product = 'DVB Device'  (string)
  info.subsystem = 'dvb'  (string)
  info.udi = '/org/freedesktop/Hal/devices/usb_device_1462_8801_noserial_dvb_1'  (string)

udi = '/org/freedesktop/Hal/devices/usb_device_1462_8801_noserial_dvb_0'
  dvb.device = '/dev/dvb/adapter8/demux0'  (string)
  info.capabilities = {'dvb'} (string list)
  info.category = 'dvb'  (string)
  info.parent = '/org/freedesktop/Hal/devices/usb_device_1462_8801_noserial'  (string)
  info.product = 'DVB Device'  (string)
  info.subsystem = 'dvb'  (string)
  info.udi = '/org/freedesktop/Hal/devices/usb_device_1462_8801_noserial_dvb_0'  (string)

udi = '/org/freedesktop/Hal/devices/usb_device_1462_8801_noserial_if0'
  info.bus = 'usb'  (string)
  info.parent = '/org/freedesktop/Hal/devices/usb_device_1462_8801_noserial'  (string)
  info.product = 'DVB-T 2'  (string)
  info.subsystem = 'usb'  (string)
  info.udi = '/org/freedesktop/Hal/devices/usb_device_1462_8801_noserial_if0'  (string)
  info.vendor = 'Afatech'  (string)
  usb.bus_number = 5  (0x5)  (int)
  usb.can_wake_up = false  (bool)
  usb.configuration = ''  (string)
  usb.configuration_value = 1  (0x1)  (int)
  usb.device_class = 0  (0x0)  (int)
  usb.device_protocol = 0  (0x0)  (int)
  usb.device_revision_bcd = 512  (0x200)  (int)
  usb.device_subclass = 0  (0x0)  (int)
  usb.interface.class = 255  (0xff)  (int)
  usb.interface.description = ''  (string)
  usb.interface.number = 0  (0x0)  (int)
  usb.interface.protocol = 0  (0x0)  (int)
  usb.interface.subclass = 0  (0x0)  (int)
  usb.is_self_powered = false  (bool)
  usb.level_number = 2  (0x2)  (int)
  usb.max_power = 500  (0x1f4)  (int)
  usb.num_configurations = 1  (0x1)  (int)
  usb.num_interfaces = 1  (0x1)  (int)
  usb.num_ports = 0  (0x0)  (int)
  usb.port_number = 3  (0x3)  (int)
  usb.product = 'DVB-T 2'  (string)
  usb.product_id = 34817  (0x8801)  (int)
  usb.serial = ''  (string)
  usb.speed = 480.0 (480) (double)
  usb.speed_bcd = 294912  (0x48000)  (int)
  usb.vendor = 'Afatech'  (string)
  usb.vendor_id = 5218  (0x1462)  (int)
  usb.version = 2.0 (2) (double)

udi = '/org/freedesktop/Hal/devices/usb_device_2304_21f_noserial'
  info.bus = 'usb_device'  (string)
  info.parent = '/org/freedesktop/Hal/devices/usb_device_0_0_noserial_4'  (string)
  info.product = 'PCTV452e'  (string)
  info.subsystem = 'usb_device'  (string)
  info.udi = '/org/freedesktop/Hal/devices/usb_device_2304_21f_noserial'  (string)
  info.vendor = 'Pinnacle'  (string)
  usb_device.bus_number = 5  (0x5)  (int)
  usb_device.can_wake_up = true  (bool)
  usb_device.configuration = ''  (string)
  usb_device.configuration_value = 1  (0x1)  (int)
  usb_device.device_class = 0  (0x0)  (int)
  usb_device.device_protocol = 0  (0x0)  (int)
  usb_device.device_revision_bcd = 512  (0x200)  (int)
  usb_device.device_subclass = 0  (0x0)  (int)
  usb_device.is_self_powered = false  (bool)
  usb_device.level_number = 1  (0x1)  (int)
  usb_device.max_power = 10  (0xa)  (int)
  usb_device.num_configurations = 1  (0x1)  (int)
  usb_device.num_interfaces = 1  (0x1)  (int)
  usb_device.num_ports = 0  (0x0)  (int)
  usb_device.port_number = 2  (0x2)  (int)
  usb_device.product = 'PCTV452e'  (string)
  usb_device.product_id = 543  (0x21f)  (int)
  usb_device.serial = ''  (string)
  usb_device.speed = 480.0 (480) (double)
  usb_device.speed_bcd = 294912  (0x48000)  (int)
  usb_device.vendor = 'Pinnacle'  (string)
  usb_device.vendor_id = 8964  (0x2304)  (int)
  usb_device.version = 2.0 (2) (double)

udi = '/org/freedesktop/Hal/devices/usb_device_2304_21f_noserial_dvb_2'
  dvb.device = '/dev/dvb/adapter0/frontend0'  (string)
  info.capabilities = {'dvb'} (string list)
  info.category = 'dvb'  (string)
  info.parent = '/org/freedesktop/Hal/devices/usb_device_2304_21f_noserial'  (string)
  info.product = 'DVB Device'  (string)
  info.subsystem = 'dvb'  (string)
  info.udi = '/org/freedesktop/Hal/devices/usb_device_2304_21f_noserial_dvb_2'  (string)

udi = '/org/freedesktop/Hal/devices/usb_device_2304_21f_noserial_dvb_1'
  dvb.device = '/dev/dvb/adapter0/dvr0'  (string)
  info.capabilities = {'dvb'} (string list)
  info.category = 'dvb'  (string)
  info.parent = '/org/freedesktop/Hal/devices/usb_device_2304_21f_noserial'  (string)
  info.product = 'DVB Device'  (string)
  info.subsystem = 'dvb'  (string)
  info.udi = '/org/freedesktop/Hal/devices/usb_device_2304_21f_noserial_dvb_1'  (string)

udi = '/org/freedesktop/Hal/devices/usb_device_2304_21f_noserial_dvb_0'
  dvb.device = '/dev/dvb/adapter0/demux0'  (string)
  info.capabilities = {'dvb'} (string list)
  info.category = 'dvb'  (string)
  info.parent = '/org/freedesktop/Hal/devices/usb_device_2304_21f_noserial'  (string)
  info.product = 'DVB Device'  (string)
  info.subsystem = 'dvb'  (string)
  info.udi = '/org/freedesktop/Hal/devices/usb_device_2304_21f_noserial_dvb_0'  (string)

udi = '/org/freedesktop/Hal/devices/usb_device_2304_21f_noserial_if0'
  info.bus = 'usb'  (string)
  info.parent = '/org/freedesktop/Hal/devices/usb_device_2304_21f_noserial'  (string)
  info.product = 'PCTV452e'  (string)
  info.subsystem = 'usb'  (string)
  info.udi = '/org/freedesktop/Hal/devices/usb_device_2304_21f_noserial_if0'  (string)
  info.vendor = 'Pinnacle'  (string)
  usb.bus_number = 5  (0x5)  (int)
  usb.can_wake_up = true  (bool)
  usb.configuration = ''  (string)
  usb.configuration_value = 1  (0x1)  (int)
  usb.device_class = 0  (0x0)  (int)
  usb.device_protocol = 0  (0x0)  (int)
  usb.device_revision_bcd = 512  (0x200)  (int)
  usb.device_subclass = 0  (0x0)  (int)
  usb.interface.class = 255  (0xff)  (int)
  usb.interface.description = ''  (string)
  usb.interface.number = 0  (0x0)  (int)
  usb.interface.protocol = 0  (0x0)  (int)
  usb.interface.subclass = 0  (0x0)  (int)
  usb.is_self_powered = false  (bool)
  usb.level_number = 1  (0x1)  (int)
  usb.max_power = 10  (0xa)  (int)
  usb.num_configurations = 1  (0x1)  (int)
  usb.num_interfaces = 1  (0x1)  (int)
  usb.num_ports = 0  (0x0)  (int)
  usb.port_number = 2  (0x2)  (int)
  usb.product = 'PCTV452e'  (string)
  usb.product_id = 543  (0x21f)  (int)
  usb.serial = ''  (string)
  usb.speed = 480.0 (480) (double)
  usb.speed_bcd = 294912  (0x48000)  (int)
  usb.vendor = 'Pinnacle'  (string)
  usb.vendor_id = 8964  (0x2304)  (int)
  usb.version = 2.0 (2) (double)

 HTH, :)
	Juergen



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100824202118.GA38687>