From: Jason Vas Dias <jason.vas.dias@gmail.com>
To: linux-hotplug@vger.kernel.org
Subject: why does udev-167 break /lib64/udev/firmware ?
Date: Thu, 14 Apr 2011 16:53:21 +0000 [thread overview]
Message-ID: <201104141753.22335.jason.vas.dias@gmail.com> (raw)
Hi -
I upgraded to the gentoo version of udev-167 today and found that my wireless interface ( a b43 )
was disabled, that I only now ( a few hours later ) now found was because /lib64/udev/firmware
seems to be thoroughly broken (and somehow the gentoo's firmware loading rules usually in
/etc/udev/rules.d/50_firmware had disappeared - maybe because they couldn't get this program
to work either ? )
Having cobbled together a new /etc/udev/rules.d/50_firmware :
SUBSYSTEM="firmware", ACTION="add", RUN+="/lib64/udev/firmware"
"firmware" simply emits some error message the first line of which contains "libusb: main.c:"
for valid arguments and does nothing . I double, triple-checked that the correct "FIRMWARE_PATH"
is generated during config .
But the whole idea of using some complicated libusb internal function, or even any new executable program,
is incomprehensible to me - to implement these few lines of shell script , which I ended up having to write,
because udev's complicated libusb method failed - so I'm posting here in the hope that udev will see sense
and give us a working firmware script instead of some broken libusb using executable, and to help anyone
else caught by the same issue:
to fix, as root:
# mv /lib64/udev/firmware /lib64/udev/firmware.broken
# cat <<'EOF'
#!/bin/bash
logger "FIRMWARE: $1 $2"
if ! echo "$1" | egrep -q '^--firmware' ; then
logger "FIRMWARE: bad firmware arg: $1";
exit 1;
elif ! echo "$2" | egrep -q '^--devpath' ; then
logger "FIRMWARE: bad devpath arg: $2";
exit 1;
fi
firmware=$1
firmware=${firmware#--firmware=}
devpath=$2
devpath=${devpath#--devpath=}
if [ ! -f /sys/${devpath}/loading ] ; then
logger "FIRMWARE: no loading: /sys/${devpath}/loading";
exit 1;
fi
if [ ! -f /sys/${devpath}/data ] ; then
logger "FIRMWARE: no data: /sys/${devpath}/data";
exit 1;
fi
echo 1 > /sys/${devpath}/loading
cp -fp /lib64/firmware/${firmware} /sys/${devpath}/data;
status=$?;
echo 0 > /sys/${devpath}/loading
logger "FIRMWARE: copied /lib64/firmware/$firmware to /sys/${devpath}/loading OK: $status"
exit $status;
EOF
>> /lib64/udev/firmware; chmod a+rx /lib64/udev/firmware
P.S. why doesn't udev use libusb-1.0 ? Rebuilding against libusb-0.1-compat didn't help though.
Sorry, new to this list - please reply to : jason.vas.dias@gmail.com
All the best,
Jason.
next reply other threads:[~2011-04-14 16:53 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-14 16:53 Jason Vas Dias [this message]
2011-04-14 17:13 ` why does udev-167 break /lib64/udev/firmware ? Kay Sievers
2011-04-14 19:03 ` Jason Vas Dias
2011-04-14 19:29 ` Jason Vas Dias
2011-04-14 21:26 ` Kay Sievers
2011-04-14 22:56 ` Jason Vas Dias
2011-04-14 23:00 ` Kay Sievers
2011-04-24 19:53 ` Matthias Schwarzott
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201104141753.22335.jason.vas.dias@gmail.com \
--to=jason.vas.dias@gmail.com \
--cc=linux-hotplug@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).