Re: [yocto] systemd - how do I wait for a driver to load?

2014-08-28 Thread Chris Tapp

On 27 Aug 2014, at 08:46, Sven Ebenfeld sven.ebenf...@gmail.com wrote:

 
 
 Am 26.08.2014 22:51, schrieb Chris Tapp:
 
 On 26 Aug 2014, at 21:02, Sven Ebenfeld sven.ebenf...@gmail.com wrote:
 
 You should look at  ConditionPathExists= Options of systemd-units.
 
 Thanks, that looks like it would do the job. I was hoping not to hard code 
 paths as they may change if a configuration file is changed, but...
 
 Otherwise if udev is loading your device module, you could add the
 device-unit to Requires= option.
 
 This sounds better. Is there an easy way to tell if udev did load the 
 module? There's nothing obvious in the syslog.
 
 If you didn't load the module by hand it's probably udev. If you didn't
 run modprobe or insmod. Then you should try to create a device-unit for
 the device.
 
 For /dev/dvb/adaptor the unit should probably be something like
 dev-dvb-adaptor.device .

Thanks. I've now got a udev rule firing when the device loads.

I'm using this to create a device alias (SYMLINK) so I can get consistent 
names, and this is working great.

I've added TAG+=systemd to the rule and I'm getting a .device generated 
automatically when the driver loads. However, the name for this isn't friendly 
(lots of bus id components). Is there a way to create my own name as my service 
doesn't want to know where the device is on the bus?

I've tried adding something like ENV{SYSTEMD_WANTS}=some-new-name.device - 
this also gets created, but it never becomes active (and can't be manually 
started).

 Am 26.08.2014 21:52, schrieb Chris Tapp:
 I've got a service running under systemd that will only start once a 
 kernel module has loaded and created its /dev/dvb/adaptor nodes.
 
 Unfortunately, it doesn't load until after the service has failed and gone 
 into an error state due to too many restarts.
 
 I could fix this by increasing the restart interval, but is there a way 
 of adding a dependancy on the kernel module?
 
 --
 
 Chris Tapp
 opensou...@keylevel.com
 www.keylevel.com
 
 
 
 
 
 --
 
 Chris Tapp
 opensou...@keylevel.com
 www.keylevel.com
 
 
 
 

--

Chris Tapp
opensou...@keylevel.com
www.keylevel.com




-- 
___
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto


Re: [yocto] systemd - how do I wait for a driver to load?

2014-08-28 Thread Sven Ebenfeld
Am 28.08.2014 18:57, schrieb Chris Tapp:
 
 On 27 Aug 2014, at 08:46, Sven Ebenfeld sven.ebenf...@gmail.com wrote:
 Am 26.08.2014 22:51, schrieb Chris Tapp:
 On 26 Aug 2014, at 21:02, Sven Ebenfeld sven.ebenf...@gmail.com wrote:

 You should look at  ConditionPathExists= Options of systemd-units.

 Thanks, that looks like it would do the job. I was hoping not to hard code 
 paths as they may change if a configuration file is changed, but...

 Otherwise if udev is loading your device module, you could add the
 device-unit to Requires= option.

 This sounds better. Is there an easy way to tell if udev did load the 
 module? There's nothing obvious in the syslog.

 If you didn't load the module by hand it's probably udev. If you didn't
 run modprobe or insmod. Then you should try to create a device-unit for
 the device.

 For /dev/dvb/adaptor the unit should probably be something like
 dev-dvb-adaptor.device .
 
 Thanks. I've now got a udev rule firing when the device loads.
 
 I'm using this to create a device alias (SYMLINK) so I can get consistent 
 names, and this is working great.
 
 I've added TAG+=systemd to the rule and I'm getting a .device generated 
 automatically when the driver loads. However, the name for this isn't 
 friendly (lots of bus id components). Is there a way to create my own name as 
 my service doesn't want to know where the device is on the bus?
 
 I've tried adding something like ENV{SYSTEMD_WANTS}=some-new-name.device - 
 this also gets created, but it never becomes active (and can't be manually 
 started).
 

There should be an option like SYSTEMD_ALIAS in udev database. I haven't
used it yet, but I think it should help out here.

http://www.freedesktop.org/software/systemd/man/systemd.device.html
describes it as SYSTEMD_ALIAS= Adds an additional alias name to the
device unit. This must be an absolute path that is automatically
transformed into a unit name. (See above.)

 Am 26.08.2014 21:52, schrieb Chris Tapp:
 I've got a service running under systemd that will only start once a 
 kernel module has loaded and created its /dev/dvb/adaptor nodes.

 Unfortunately, it doesn't load until after the service has failed and 
 gone into an error state due to too many restarts.

 I could fix this by increasing the restart interval, but is there a way 
 of adding a dependancy on the kernel module?

 --

 Chris Tapp
 opensou...@keylevel.com
 www.keylevel.com





 --

 Chris Tapp
 opensou...@keylevel.com
 www.keylevel.com




 
 --
 
 Chris Tapp
 opensou...@keylevel.com
 www.keylevel.com
 
 
 
 
-- 
___
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto


Re: [yocto] systemd - how do I wait for a driver to load?

2014-08-28 Thread Chris Tapp

On 28 Aug 2014, at 20:51, Sven Ebenfeld sven.ebenf...@gmail.com wrote:

 Am 28.08.2014 18:57, schrieb Chris Tapp:
 
 On 27 Aug 2014, at 08:46, Sven Ebenfeld sven.ebenf...@gmail.com wrote:
 Am 26.08.2014 22:51, schrieb Chris Tapp:
 On 26 Aug 2014, at 21:02, Sven Ebenfeld sven.ebenf...@gmail.com wrote:
 
 You should look at  ConditionPathExists= Options of systemd-units.
 
 Thanks, that looks like it would do the job. I was hoping not to hard code 
 paths as they may change if a configuration file is changed, but...
 
 Otherwise if udev is loading your device module, you could add the
 device-unit to Requires= option.
 
 This sounds better. Is there an easy way to tell if udev did load the 
 module? There's nothing obvious in the syslog.
 
 If you didn't load the module by hand it's probably udev. If you didn't
 run modprobe or insmod. Then you should try to create a device-unit for
 the device.
 
 For /dev/dvb/adaptor the unit should probably be something like
 dev-dvb-adaptor.device .
 
 Thanks. I've now got a udev rule firing when the device loads.
 
 I'm using this to create a device alias (SYMLINK) so I can get consistent 
 names, and this is working great.
 
 I've added TAG+=systemd to the rule and I'm getting a .device generated 
 automatically when the driver loads. However, the name for this isn't 
 friendly (lots of bus id components). Is there a way to create my own name 
 as my service doesn't want to know where the device is on the bus?
 
 I've tried adding something like ENV{SYSTEMD_WANTS}=some-new-name.device - 
 this also gets created, but it never becomes active (and can't be manually 
 started).
 
 
 There should be an option like SYSTEMD_ALIAS in udev database. I haven't
 used it yet, but I think it should help out here.
 
 http://www.freedesktop.org/software/systemd/man/systemd.device.html
 describes it as SYSTEMD_ALIAS= Adds an additional alias name to the
 device unit. This must be an absolute path that is automatically
 transformed into a unit name. (See above.)

My original attempt is now working - I just had a typo in the dynamic .device 
name where it was referenced in the .service :-(

So, assigning a SYMLINK to the udev rule and adding the systemd tag 
dynamically creates a device unit with a name of SYMLINK.device (which makes 
sense).

The service then BindsTo to this device and runs After it is ready.

Thanks for your help in getting this going :-)

 Am 26.08.2014 21:52, schrieb Chris Tapp:
 I've got a service running under systemd that will only start once a 
 kernel module has loaded and created its /dev/dvb/adaptor nodes.
 
 Unfortunately, it doesn't load until after the service has failed and 
 gone into an error state due to too many restarts.
 
 I could fix this by increasing the restart interval, but is there a 
 way of adding a dependancy on the kernel module?

--

Chris Tapp
opensou...@keylevel.com
www.keylevel.com




-- 
___
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto


Re: [yocto] systemd - how do I wait for a driver to load?

2014-08-27 Thread Sven Ebenfeld


Am 26.08.2014 22:51, schrieb Chris Tapp:
 
 On 26 Aug 2014, at 21:02, Sven Ebenfeld sven.ebenf...@gmail.com wrote:
 
 You should look at  ConditionPathExists= Options of systemd-units.
 
 Thanks, that looks like it would do the job. I was hoping not to hard code 
 paths as they may change if a configuration file is changed, but...
 
 Otherwise if udev is loading your device module, you could add the
 device-unit to Requires= option.
 
 This sounds better. Is there an easy way to tell if udev did load the module? 
 There's nothing obvious in the syslog.

If you didn't load the module by hand it's probably udev. If you didn't
run modprobe or insmod. Then you should try to create a device-unit for
the device.

For /dev/dvb/adaptor the unit should probably be something like
dev-dvb-adaptor.device .

 
 Am 26.08.2014 21:52, schrieb Chris Tapp:
 I've got a service running under systemd that will only start once a kernel 
 module has loaded and created its /dev/dvb/adaptor nodes.

 Unfortunately, it doesn't load until after the service has failed and gone 
 into an error state due to too many restarts.

 I could fix this by increasing the restart interval, but is there a way 
 of adding a dependancy on the kernel module?

 --

 Chris Tapp
 opensou...@keylevel.com
 www.keylevel.com




 
 --
 
 Chris Tapp
 opensou...@keylevel.com
 www.keylevel.com
 
 
 
 
-- 
___
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto


Re: [yocto] systemd - how do I wait for a driver to load?

2014-08-26 Thread Sven Ebenfeld
You should look at  ConditionPathExists= Options of systemd-units.
Otherwise if udev is loading your device module, you could add the
device-unit to Requires= option.

Am 26.08.2014 21:52, schrieb Chris Tapp:
 I've got a service running under systemd that will only start once a kernel 
 module has loaded and created its /dev/dvb/adaptor nodes.
 
 Unfortunately, it doesn't load until after the service has failed and gone 
 into an error state due to too many restarts.
 
 I could fix this by increasing the restart interval, but is there a way of 
 adding a dependancy on the kernel module?
 
 --
 
 Chris Tapp
 opensou...@keylevel.com
 www.keylevel.com
 
 
 
 
-- 
___
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto


Re: [yocto] systemd - how do I wait for a driver to load?

2014-08-26 Thread Khem Raj
On 14-08-26 20:52:58, Chris Tapp wrote:
 I've got a service running under systemd that will only start once a kernel 
 module has loaded and created its /dev/dvb/adaptor nodes.
 
 Unfortunately, it doesn't load until after the service has failed and gone 
 into an error state due to too many restarts.
 
 I could fix this by increasing the restart interval, but is there a way of 
 adding a dependancy on the kernel module?

if you module is loaded automatically on boot then dependent service
could use below dependency

After=systemd-modules-load.service

 
 --
 
 Chris Tapp
 opensou...@keylevel.com
 www.keylevel.com
 
 
 
 
 -- 
 ___
 yocto mailing list
 yocto@yoctoproject.org
 https://lists.yoctoproject.org/listinfo/yocto
-- 
___
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto


Re: [yocto] systemd - how do I wait for a driver to load?

2014-08-26 Thread Chris Tapp

On 26 Aug 2014, at 21:02, Sven Ebenfeld sven.ebenf...@gmail.com wrote:

 You should look at  ConditionPathExists= Options of systemd-units.

Thanks, that looks like it would do the job. I was hoping not to hard code 
paths as they may change if a configuration file is changed, but...

 Otherwise if udev is loading your device module, you could add the
 device-unit to Requires= option.

This sounds better. Is there an easy way to tell if udev did load the module? 
There's nothing obvious in the syslog.

 Am 26.08.2014 21:52, schrieb Chris Tapp:
 I've got a service running under systemd that will only start once a kernel 
 module has loaded and created its /dev/dvb/adaptor nodes.
 
 Unfortunately, it doesn't load until after the service has failed and gone 
 into an error state due to too many restarts.
 
 I could fix this by increasing the restart interval, but is there a way of 
 adding a dependancy on the kernel module?
 
 --
 
 Chris Tapp
 opensou...@keylevel.com
 www.keylevel.com
 
 
 
 

--

Chris Tapp
opensou...@keylevel.com
www.keylevel.com




-- 
___
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto