WARNING: at /build/buildd/linux-2.6.38/lib/kref.c:34
After debugging uss720 driver i discovered that the completion callback was called before usb_submit_urb returns.
The callback frees the request structure that is krefed on return by usb_submit_urb.
--- a/drivers/usb/misc/uss720.c
+++ b/drivers/usb/misc/uss720.c
@@ -177,12 +177,11 @@ static struct uss720_async_request *submit_async_request(...
spin_lock_irqsave(&priv->asynclock, flags);
list_add_tail(&rq->asynclist, &priv->asynclist);
spin_unlock_irqrestore(&priv->asynclock, flags);
+ kref_get(&rq->ref_count);
ret = usb_submit_urb(rq->urb, mem_flags);
- if (!ret) {
- kref_get(&rq->ref_count);
+ if (!ret)
return rq;
- }
- kref_put(&rq->ref_count, destroy_async);
+ destroy_async(&rq->ref_count);
err("submit_async_request submit_urb failed with %d", ret);
return NULL;
}
http://git.kernel.org/?p=linux/kernel/g ... 5b45be8688
[ view entry ] ( 1724 views ) | print article
sudo apt-get install kexec-tools
change LOAD_KEXEC to true in /etc/default/kexec
[ view entry ] ( 806 views ) | print article
First activate and rise webcam audio input level with alsamixer.
ffmpeg -f video4linux2 -i /dev/video0 -pix_fmt yuv420p -s vga -r 8 -f alsa -ac 1 -ar 16000 -i hw:1,0 -vcodec mpeg4 -b 400k -acodec libmp3lame -ab 80k video.avi
[ view entry ] ( 1203 views ) | print article
I got a funny viennese dialect keyboard, but after start using it i missed a key '<,>,|'
So i searched for a way to remap 'AltGr + y' to '|', 'AltGr + ,' to '<' and 'AltGr + .' to '>'
Console
evaluate the key to change with
#> sudo showkey -s
press the key
here y is 0x2c = 44
here , is 0x33 = 51
here . is 0x34 = 52
test remap with
echo "altgr keycode 44 = bar" | loadkeys
bar is a symbolic name i found at German-Howto
Finally i extended /etc/rc.local with
LOADKEYS=$(which loadkeys)
if [ -x $LOADKEYS ]; then
cat << EOT | $LOADKEYS
altgr keycode 44 = bar
altgr keycode 51 = less
altgr keycode 52 = greater
EOT
unset LOADKEYS
fi
Xorg
evaluate the key to change with
#> xev
press the key
here y is keycode 52
here , is keycode 59
here . is keycode 60
test remap with
xmodmap -e "keycode 52 = y Y y Y bar"
dump keys with
#> xmodmap -pke > ~/.Xmodmap
remove all lines except lines starting with desired keycodes to change.
my ~/.Xmodmap now looks like
keycode 52 = y Y y Y bar U203A guillemotright
keycode 59 = comma semicolon comma semicolon less multiply periodcentered
keycode 60 = period colon period colon greater division U2026
[ view entry ] ( 2459 views ) | print article
#> apt-get install xawtv
I assume the usb stick become /dev/video0 and audio became card 1 (card 0 is an onboard audio device)
#> v4lctl -c /dev/video0 setattr input Composite1
#> v4lctl -c /dev/video0 setattr mute off
#> amixer -c 1 sset Line,0 50%,50% unmute cap
test with:
#> arecord -D hw:1,0 -f S16_LE -c2 -r48000 | aplay
To execute this commands automatically on plugin udev could be used:
I have a cheap msi movie vox mini stick using em28xx driver with an option set:
/etc/modprobe.d/local.conf
options em28xx card=38
/etc/udev/rules.d/90-usbvideo.rules:
ACTION=="add", KERNEL=="video*", DRIVERS=="usb", ATTRS{idVendor}=="eb1a", ATTRS{idProduct}=="2861", RUN+="/usr/bin/v4lctl -c /dev/%k setattr input Composite1"
ACTION=="add", KERNEL=="video*", DRIVERS=="usb", ATTRS{idVendor}=="eb1a", ATTRS{idProduct}=="2861", RUN+="/usr/bin/v4lctl -c /dev/%k setattr mute off"
ACTION=="add", KERNEL=="video*", DRIVERS=="usb", ATTRS{idVendor}=="eb1a", ATTRS{idProduct}=="2861", RUN+="/usr/bin/logger video init %k done"
ACTION=="add", KERNEL=="controlC[0-9]*", DRIVERS=="usb", ATTRS{idVendor}=="eb1a", ATTRS{idProduct}=="2861", RUN+="/usr/bin/amixer -c %n sset Line,0 50%,50% unmute cap"
ACTION=="add", KERNEL=="controlC[0-9]*", DRIVERS=="usb", ATTRS{idVendor}=="eb1a", TTRS{idProduct}=="2861", RUN+="/usr/bin/logger audio init card %n done"
v4lctl needs some time to finish, to check the settings use:
v4lctl -c /dev/video0 show
[ view entry ] ( 5178 views ) | print article
<<First <Back | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | Next> Last>>