Due to my recent acquisition of an RTL-SDR compatible radio module (Some would call it DVB-T stick) I started playing with radio transmissions. Doing so I found POCSAG (pager) transmissions which I tried to decode using multimon. Sadly multimon was very broken, after I finally managed to compile it on OS X I realized it had 64bit bugs preventing the decoding on my system. So I forked it and patched a lot. I rewrote large parts of the POCSAG decoder after reading the patent text as well as implemented the BCH forward error correction. Besides improving POCSAG my main focus was portability, it now even compiles on Windows 🙂

MultimonNG a fork of multimon. It decodes the following digital transmission modes:

The following changes have been made so far:
-Fixes for x64
-Basic functionality on Mac OS X ‘Lion’ (Soundcard/OSS input is unsupported)
-‘DUMMY_AUDIO’ “backend” (Gets rid of the OSS dependency, breaks audio in doing so)
-‘ONLY_RAW’ disables the format conversion while getting rid of posix dependencies
-Option ‘NO_X11’ to disable the X11 dependency since Apple will drop Xorg soon
-Override mode for POCSAG decoding (e.g. force text decoding)
-Brute-Force BCH implementation for POCSAG forward error correction
-Verbose mode is now listed in ‘-h’
-Merged Debian patches for EAS (Emergency Alert System) decoding (untested)
-Portability is a major goal
-Compiles on Windows (MinGW or Cygwin) without format conversion
-PulseAudio support, contributed by inf_l00p_
-Windows native audio and a VisualStudio/MSVC project file, contributed by bzzt_ploink

In addition to the deprecated legacy Makefile there is also a file for qmake which is the preferred way of building MultimonNG. It’s recommended to use qmake to generate the Makefile. (‘qmake && make’)
So far multimonNG has been successfully built on OS X, Debian, Ubuntu and Windows. (On Windows using the Qt-MinGW build environment, as well as Cygwin and VisualStudio/MSVC)

Files can be easily converted into multimonNGs native raw format using ‘sox’.
e.g. “sox -t wav infile.wav -esigned-integer -b16 -r 22050 -t raw outfile.raw remix 1”
GNURadio can also generate the format using the file sink in input mode ‘short’.

License: GPLv2

Windows version:
(It doesn’t come with SoX and as a result can’t handle filetype conversions. Soundcard input and virtual audio cables should work fine, though.)

Some testfile converted to the native multimon format: poc1200
To decode it try “multimonNG.exe -a POCSAG1200 -t raw poc1200.raw”.
(“-i” is needed for recent versions of multimon-ng)

Superkuh wrote a bit about using multimonNG with GNURadio allowing for realtime decoding.

Apparently you can combine multimonNG with rtl_fm to live decode POCSAG. It even seems to be lightweight enough to work on a Raspberry Pi. Thanks to Sonny_Jim from ##rtlsdr on freenode for trying!

<Sonny_Jim> Ok, so this works:
<Sonny_Jim> rtl_fm -f 153.353e6 -g 100 -s 22050 -l 310 – |multimon -t raw -a POCSAG1200 -f alpha /dev/stdin

Overclocking my HTC Vision aka Desire Z aka G2

I’ve recently added some modifications to the Cyanogenmod kernel. They include overclocking up to 2ghz as well as lower idle voltages (undervolting) and a higher default maximum frequency. The maximum frequency after bootup is now 1516800hz. It can be changed up to 2016000hz. Frequencies higher than 1612800hz are unstable when using the ondemand governor on my phone, they seem to be stable when used with the performance governor or even the conservative one, so I think it might be related to the fast frequency switching. At 2ghz the phone gets really hot in a matter of minutes so be careful, you can probably damage it using this kernel. Thus I take no responsibility for any damages resulting from using this kernel!

My frequency(in hz)/voltage(in mV)-table is the following:
245760 750
368640 800
768000 900
806400 925
1113600 1000
1209600 1050
1305600 1100
1401600 1150
1497600 1225
1516800 1225
1612800 1300
1708800 1450
1804800 1500
1920000 1500
2016000 1500

Download: zImage bcm4329.ko

I just was able to lower the voltages a bit, here is the new kernel: zImage_v2
245760 750
368640 800
768000 900
806400 925
1113600 1000
1209600 1050
1305600 1100
1401600 1150
1516800 1200
1612800 1250
1708800 1300
1804800 1400
1920000 1450
2016000 1500

I made a third version containing a crude hack to fix the problem with the governors. Now my phone runs at min 245mhz and max 1920mhz using the ondemand governor.
Download: zImage_v3
Source: acpuclock-7×30 (The only file I changed)

The easiest way to flash it is using fastboot and adb from the android sdk. I guess I could also build a flashable zip, but I don’t feel like figuring how that works. If someone makes one, feel free to send me a copy, I’ll attach it here.
Flashing the kernel:

fastboot flash zimage zImage

Flashing the new WiFi module:

adb remount
adb push bcm4329.ko /system/lib/modules

After using my kernel for quite a while it seems to be pretty stable on my phone. Running at 2GHz I sometimes get random freezes, but 1.92GHz seems stable for daily use. I also tried playing 3d games on 1.92GHz for about half an hour and even though the phone got noticeably hot everything went peachy. 🙂

A driver independent and really ugly way to set the display brightness

I lately had some problems changing my laptops (A Samsung Q45) brightness since the major distributions went on and started using KMS instead of the prior Xorg driver, even though most Samsung laptops aren’t properly supported. Searching around the net I found some hints about using setpci – Writing directly into the hardware.

dekar@vasectomy:~$ sudo dmidecode -s system-manufacturer
dekar@vasectomy:~$ sudo dmidecode -s system-product-name
dekar@vasectomy:~$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation Mobile GM965/GL960 Integrated Graphics Controller (rev 03)
dekar@vasectomy:~$ sudo setpci -s 00:02.0 F4.B=FF

Values between 0x00 and 0xFF should work, though my display turns off once I lower them too far and refuses to start working unless I reboot the whole thing. 0x40 to 0xFF should be safe.

The following samsung-backlight fork worked for me in fully integrating the backlight control again. Works fine now using the hotkeys 🙂

You probably need to install the kernel sources, at least the headers. Besides this installing should be totally painless and after doing so you can load it using ‘modprobe samsung-backlight’.

My Optoma HD700X projector running at 120hz – Is 3D feasible?

I didn’t find any information related to this (just people complaining about not getting a firmware update) so I feel like posting it for others to find via Google. My HD700X seems to be able to do 120hz. I just did a quick test using my laptop (vga) since my htpc (hdmi) is broken right now, yet it seems to work. I am running Debian and all I did was set the resolution, it just worked. The online specs I read state it could only do 100hz, but the OSD pretends to operate at 120hz. So if anyone has one of those projectors, as well as 3D equipment, I would highly appreciate any feedback on how well it works.

Watching 24p video at 24hz is fluent (besides the 24p lagginess), same for 48hz. But from that point on (72hz, 96hz and 120hz) it starts juttering. I am not sure whether that’s vdpau/nvidia or the projector. I also realized my HD700X reports as HD65 according to the EDID data. Pretty weird – I guess the easiest way to find out whether it actually supports 120hz is getting 3d shutter equipment.

Update #2:
Optoma released an official firmware update unlocking 120hz operation including DLP-Link for the HD65, HD700x and GT7000 projectors.

Download it here

Pidgin and some addons

Since Debians Pidgin has broken protocols and there was a severe security risk I had to rebuild my local Pidgin. This time I made some nice DEBs so you can use them as well. As always my purple plugin pack contains switchspell. 😉 Oh and they’re all 64bit.


How to play HD Flash videos lag free on Debian/Ubuntu

After searching ages for the reason why Youtube HD Flash videos run fine on my laptop (Even two at the same time!) but not on a friends laptop with mostly identical hardware we found out that it’s depending in the installed architecture. Debian Lenny 32bit has major problems playing flash videos (doesn’t matter whether you get it from backports or adobe) but the 64bit version has none of them. It seems like the 64bit version of the flash player has insane benefits from 64bit – I really wonder why! I still have the tearing problem most Intel GPUs have, but at least it runs fluent 😀 I am pretty sure Squeeze and Ubuntu are affected as well, though we only tried Squeeze 64bit and it was fine – as expected.