Thursday, January 21, 2010

Medion X10 remote and Linux

I've recently bought a remote for my PC. I thought it would be quite convenient to have one especially that it could be quite handy during watching DVDs.

I picked an inexpensive, radio operated, USB Medion X10 - around $10.

After plugging the USB dongle it turned out that the remote becomes a HID - dobling the keyboard. It was nice but not exactly what I needed. I want to have a remote control for my multimedia pplications - not to control the computer.

So here comes the magic word LIRC: Linux InfraRed Control.  It's a little bit misleading since the remote has nothing to do with InfraRed, but LIRC is actually an infrastructure which allows to control applications with remote controls. So I installed lirc:
apt-get install lirc
Upon configuration I selected ATI/NVidia/X10 RF Remote, and voila... the remote stopped working as a HID. Now I need to comeup with proper configurations for my multimedia applications. Here comes a complete config file /etc/lirc/lircrc I came up with:

begin
    remote = Medion_MD8800
    prog = xine
    button = DVD_Menu
    config = RootMenu
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = xine
    button = Up
    config = EventUp
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = xine
    button = Down
    config = EventDown
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = xine
    button = Left
    config = EventLeft
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = xine
    button = Right
    config = EventRight
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = xine
    button = Vol_Up
    config = Volume+
    repeat = 1
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = xine
    button = Vol_Down
    config = Volume-
    repeat = 1
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = xine
    button = OK
    config = EventSelect
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = xine
    button = Mute
    config = Mute
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = xine
    button = Info
    config = OSDStreamInfos
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = xine
    button = Rewind
    config = SeekRelative-15
    repeat = 1
    delay = 5
end

begin
    remote = Medion_MD8800
    prog = xine
    button = Play
    config = Play
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = xine
    button = Forward
    config = SeekRelative+15
    repeat = 1
    delay = 5
end

begin
    remote = Medion_MD8800
    prog = xine
    button = Pause
    config = Pause
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = xine
    button = Power
    config = Quit
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = xine
    button = Stop
    config = Stop
    repeat = 0
    delay = 0
end

begin
    prog = Rhythmbox
    remote = *
    button = Play
    repeat = 1
    config = play
end

begin
    prog = Rhythmbox
    remote = *
    button = Pause
    repeat = 0
    config = pause
end

begin
    prog = Rhythmbox
    remote = *
    button = KEY_PLAYPAUSE
    repeat = 1
    config = playpause
end

begin
    prog = Rhythmbox
    remote = *
    button = Stop
    repeat = 1
    config = stop
end


begin
    prog = Rhythmbox
    remote = *
    button = Next
    repeat = 0
    config = next
end

begin
    prog = Rhythmbox
    remote = *
    button = Prev
    repeat = 0
    config = previous
end

begin
    prog = Rhythmbox
    remote = *
    button = Rewind
    repeat = 1
    delay = 5
    config = seek_backward
end

begin
    prog = Rhythmbox
    remote = *
    button = Vol_Up
    repeat = 5
    config = volume_up
end

begin
    prog = Rhythmbox
    remote = *
    button = Vol_Down
    repeat = 5
    config = volume_down
end

begin
    prog = Rhythmbox
    remote = *
    button = Power
    repeat = 1
    config = quit
end

begin
    remote = Medion_MD8800
    prog = totem
    button = DVD_Menu
    config = play_dvd
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = totem
    button = Power
    config = quit
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = totem
    button = Up
    config = up
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = totem
    button = Down
    config = down
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = totem
    button = Left
    config = left
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = totem
    button = Right
    config = right
    repeat = 0
    delay = 0
end

begin
        prog = totem
        remote = Medion_MD8800
        button = OK
        repeat = 1
        config = select
end

begin
        prog = totem
        remote = Medion_MD8800
        button = DVD_Menu
        repeat = 0
        config = menu
end

begin
    remote = Medion_MD8800
    prog = totem
    button = Vol_Up
    config = volume_up
    repeat = 5
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = totem
    button = Vol_Down
    config = volume_down
    repeat = 5
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = totem
    button = Mute
    config = mute
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = totem
    button = Back
    config = quit
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = totem
    button = Info
    config = show_playing
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = totem
    button = Rewind
    config = seek_backward
    repeat = 1
    delay = 5
end

begin
    remote = Medion_MD8800
    prog = totem
    button = Play
    config = play_pause
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = totem
    button = Forward
    config = seek_forward
    repeat = 1
    delay = 5
end

begin
    remote = Medion_MD8800
    prog = totem
    button = Pause
    config = pause
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = mplayer
    button = Power
    config = quit
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = mplayer
    button = Up
    config = seek +60 0
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = mplayer
    button = Down
    config = seek -60 0
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = mplayer
    button = Left
    config = seek -6 0
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = mplayer
    button = Right
    config = seek +6 0
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = mplayer
    button = Vol_Up
    config = volume +1
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = mplayer
    button = Vol_Down
    config = volume -1
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = mplayer
    button = OK
    config = pause
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = mplayer
    button = Mute
    config = mute
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = mplayer
    button = Rewind
    config = seek -30 0
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = mplayer
    button = Play
    config = pause
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = mplayer
    button = Forward
    config = seek +30 0
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = mplayer
    button = Pause
    config = pause
    repeat = 0
    delay = 0
end

begin
    remote = Medion_MD8800
    prog = mplayer
    button = Stop
    config = quit
    repeat = 0
    delay = 0
end

Mind that it enables remote control for xine, rythmbox, totem and mplayer (rythmobox, and totem must have the lirc support enabled to work, see Edit/Plugins). Enjoy.

Making a nice home video DVD

Video source: a Sony handycam (DCR-SR36) which produces mpeg/2 files.

Anticipated result: a nice DVD with rich menus.

How to do it?

First, I don't want to recode the movie clips, since it would degrade their quality. So I decided to use the mpegs straight from the video camera. If there is a need to clip such a video there is a nice tool to do that: avidemux.

There is also another nice tool for DVD authoring: DVDStyler - you can create a DVD menu interactively, add/rearrange clips etc. However it seems that it takes a great deal of time to come up with nice designs.

So I stumbled upon tovid. It's a bunch of scripts which allow to author a DVD in a non-interactive way, just generating appropriate menus, thumbnails etc. And here comes a bummer.... It turned out that there the mpegs from the videocam are not 100% compatible with the DVD format, and they require ... well not recoding but remuxing (remultiplexing). In order to do that I use a buch of commands:
ffmpeg -i $1 -vcodec copy -an -f rawvideo foo.mpv
ffmpeg -i $1 -vn -acodec copy -f mp2 foo.mp2
mplex -f 8 -o $2 foo.mpv foo.mp2
rm foo.mpv foo.mp2
Actually its a script, its good to save the above contents as an executable file, let's say: mpgfix, and then run it:
mpgfix file.mpg file-fixed.mpg
So file.mpg is remuxed and saved as file-fixed.mpg. You can save the file with the same name of course, then the original one will be replaced with the remuxed one. Mind that there is no quality loss here, no recoding.

And here comes the nice part DVD authoring, I just launch one of the tovid scripts (todisc):
todisc -loop 0 -chain-videos -menu-length 2 -thumb-shape normal -aspect 16:9 -menu-title "My DVD" -pal -files *.mpg -titles *.mpg -out DVD
And after a while in the DVD directory there is a complete authored DVD :) with nice animated menus. You can generate an ISO image out of it:
mksiofs -dvd-video -o dvd.iso DVD/
And you'll get a file dvd.iso which is a complete ISO image ready to burn. Enjoy.

Friday, December 11, 2009

Screen for X11

Finally!!! I think I found a key application I've been searching for.... some time. Basically it is like GNU screen for X11 :)
Take a look at it: http://code.google.com/p/partiwm/wiki/xpra

It is also available in Ubuntu, just:

apt-get install xpra

From its description:
Xpra gives you "persistent remote applications" for X. That is, unlike normal X applications, applications run with xpra are "persistent" -- you can run them remotely, and they don't die if your connection does. You can detach them, and reattach them later -- even from another computer -- with no loss of state. And unlike VNC or RDP, xpra is for remote applications, not remote desktops -- individual applications show up as individual windows on your screen, managed by your window manager. They're not trapped in a box.

Thursday, December 10, 2009

Gnome Workspace Switcher and managing (moving) windows.

I have a dual-head setup (NVidia TwinView) where the second screen is an overhead projector. I would find it extremely useful if I could just drag windows using the Workspace Switcher between my screens. This would help a lot especially at times when the projector is blanked or switched off and I would like to move some windows to be projected when switched on/unblanked.

Beware... tadaaaaa...Since yesterday windows can be dragged not only to a different workspace (without altering their relative position) but also within the workspace. I made a modification to libwnck (the library which implements the pager and allows to manipulate windows) which implements this feature and submitted it upstream. I wonder if it is going to be committed to the next Gnome release or not... we'll see.

Anyway you you would like o use this functionality in Ubuntu 9.10 Karmic Koala, here is a link to my PPA: https://launchpad.net/~wojnicki/+archive/ppa

And if you want to compile libwnck by yourself you can find the appropriate patch at the feature request: https://bugzilla.gnome.org/show_bug.cgi?id=604207

Wednesday, November 4, 2009

Enabling laptop VGA output

The following commands enable VGA output (works presumably with any XOrg driver, tested with several ATI Radeon cards). It is especially useful if you want to make your laptop work with a projector connected with a damaged or long cable.
xrandr --newmode 1024x768N 108.0 1280 1328 1440 1688 1024 1025 1028 1066 +hsync +vsync
xrandr --addmode VGA-0 1024x768N
xrandr --output LVDS --mode 1024x768
xrandr --output VGA-0 --mode 1024x768N
The first command adds a new 1024x768 (60Hz) video mode and names it: 1024x768N. The second command assigns the video mode to the VGA port (VGA-0). While the third and fourth commands switch the LCD display (LVDS) to 1024x768 mode and the VGA port to the newly created one respectively.

Monday, November 2, 2009

HP Photosmart C4280 Cartridge Problems

If you have an HP Photosmart C4280 Printer, HP might try to rob you… on ink cartridges. If the printer displays a message:
Print cartridge(s) missing or not detected.

It doesn't mean that! You might think that the cartridge is empty or damaged. You couldn't be more WRONG! It just means that HP wants YOU to BUY a NEW CARTRIDGE - but DON'T DO THAT! You cartridge is presumably fine!

Actually you can try to convince the printer that the cartridge is ok by entering the service mode. To do that press buttons in the following sequence:

  • Power and Cancel simultanously, then
  • Blue, Green, Gray buttons, in turn.

Congrats! You entered the service mode. Now you can read and edit some of the printer settings. Watch the LCD display, it should say sth like:

Support
PlxxFN0724AR

Now, the color buttons mean:

  • Blue: next
  • Gray: previous
  • Green: enter

Which allow you to browse the menu and options.

In order to cure your cartridge press Blue once. You will see Information Menu displayed. Enter the menu by pressing Green. Go to Pen supply, level of Ink (LOI) submenu by pressing 11 times Blue and enter it by pressing Green. Then you can see some ink levels on the display. At this point your job is done. Press Cancel 3 times – it will quit the service mode. And you will notice that the nasty message about the cartridge being missing is gone.

Putting it all together, to reset the message press:

  • Power and Cancel simultaneously,
  • Blue, Green, Gray, in turn,
  • Blue
  • Green
  • 11 times Blue
  • Green
  • 3 times cancel.

I found these service codes on the web and accidently i figured out that viewing the ink level resets the nasty message. The drawback is that you need to reset the printer pretty much every print job.

It's been about 400 pages since I reset the thing and the cartridge is still operational despite its ink levels being reported as nonexistant.

Compiling Ubuntu 9.10 (Karmic Koala) Kernel

If you want to compile an Ubuntu linux kernel don't:
  • use make-kpg
  • use make menuconfig
To get the kernel source issue:
apt-get source linux-source

It will download a TAR archive into your working directory. Untar the archive and cd into the directory with the kernel source.

Re/Configure the kernel by issuing:

debian.master/scripts/misc/kernelconfig editconfig

It will ask you to reconfigure all kernel flavours in turn. Reconfigure the flavour you want to alter, not changing the others.

In order to build your kernel (the generic flavour) issue:

CONCURRENCY_LEVEL=2 AUTOBUILD=1 NOEXTRAS=1 skipabi=true skipmodule=true debian/rules binary-generic

After a while you should see deb packages in the parent directory.

If you want to come up with your flavour take a look at: http://mmlinux.wordpress.com/2009/07/30/how-to-compile-kernel-in-karmic/