As for the em8300 module, the problem is that it creates device files by calling udev but udev is not running. And the device files will not be created when udev is started.
For me it's clear that udev must be executed first.
]]>That's some option. But why not just use modprobe.conf the way it was meant to be used? The fact is that before today's upgrade it worked properly and the upgrade broke it.
It should work fine. Everything does use modprobe... the reason I suggested udev is that, well, udev is nutty. Udev tries to control much more than it should be controlling... so I'd rather have all rules on one place.
]]>However, let me suggest two things.... first off, I think you're dead on with the 'setserial' part - the node probably doesn't exist yet.
Let me point out something about how modprobe 'install' rules work:install lirc-serial setserial /dev/ttyS0 uart none ; modprobe -i lirc-serial ; true
This line says "when lirc-serial is loaded, do this first" - lirc-serial is not actually loaded at that point
That's exactly what I want. The serial port needs to be configured before lirc-serial is loaded.
If you really need this rule, you can simply add the proper serial module before lirc-serial in the MODULES array.
The question is - which module is responsible for serial port? I do lsmod and can't see any suspects. Isn't the serial port support built into the kernel?
I'd say stick that line in rc.local, or, even better, make a rc.d+conf.d pair for setserial, which can be added to the package.
Secondly, I'd suggest usingMODULES=(.... adv717x em8300 ....)
and getting rid of that modprobe.conf rule altogether.
That's some option. But why not just use modprobe.conf the way it was meant to be used? The fact is that before today's upgrade it worked properly and the upgrade broke it.
]]>Put these modules on udev's blacklist, and then load them from rc.conf MODULES. According to the new udev wiki page, the best way to do this is
MODULES=(!lirc-serial !em8300 lirc-serial em8300)
With the new udev in testing, MODULES are loaded before udev. And yes, udev can happily manage modules loaded before it has started - that's the point of the 'uevents' subsystem. So, you can get away with just:
MODULES=(lirc-serial em8300)
However, let me suggest two things.... first off, I think you're dead on with the 'setserial' part - the node probably doesn't exist yet.
Let me point out something about how modprobe 'install' rules work:
install lirc-serial setserial /dev/ttyS0 uart none ; modprobe -i lirc-serial ; true
This line says "when lirc-serial is loaded, do this first" - lirc-serial is not actually loaded at that point - that's the reason it's modprobed right after the setserial command. If you really need this rule, you can simply add the proper serial module before lirc-serial in the MODULES array.
I'd say stick that line in rc.local, or, even better, make a rc.d+conf.d pair for setserial, which can be added to the package.
Secondly, I'd suggest using
MODULES=(.... adv717x em8300 ....)
and getting rid of that modprobe.conf rule altogether.
]]>MODULES=(!lirc-serial !em8300 lirc-serial em8300)
install lirc-serial setserial /dev/ttyS0 uart none ; modprobe -i lirc-serial ; true
install em8300 modprobe adv717x ; modprobe -i em8300 ; true
and in the MODULES array I have lirc-serial and em8300 (both not detected bu udev). lirc-serial fails to load because setserial isn't executed. em8300 doesn't create all necessary device files because adv717x isn't loaded before em8300. Any ideas?
]]>