USB: uss720 fixup refcount position 
My testprog do a lot of bitbang - after hours i got following warning and my machine lockups:

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 ] ( 1487 views )   |  print article
fast reboot with kexec 
sudo apt-get install kexec-tools

change LOAD_KEXEC to true in /etc/default/kexec

[ view entry ] ( 649 views )   |  print article
record a video with ffmpeg from a webcam with audio 
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 ] ( 995 views )   |  print article
key remap on keyboard for console and X 
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 ] ( 2280 views )   |  print article
Audio only capture from a video/audio usb capture stick 
#> 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 ] ( 5024 views )   |  print article

<<First <Back | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | Next> Last>>