Latest Entries »

I have updated my Raspberry Pi to LibreELEC. To make the remote control work a couple of things need to done. If you want to know how to connect an ir receiver to the pi have a look at this post raspberry-pi-kodi-xbmc-media-center-ir-remote-control

login via ssh
>mount -o remount,rw /flash
>nano /flash/config.txt
at the bottom add:


save and quit nano
>mount -o remount,ro /flash
login again via ssh
it should show something like “auto-detected active low receiver on GPIO pin 18”
>killall lircd
>mode2 -d /dev/lirc0
test your remote
quit mode2
>cd /storage/.config/
>irrecord -l
prints a list of valid names for the keys
>irrecord -d /dev/lirc0 lircd.conf
configure a minimal set of keys


the epg key is for the context menu
exit and reboot

if you test with “irw” the remote will not work

irrecord named the config file with the name of the remote
and we need to remove that name from the file name
myremote.lircd.conf should be lircd.conf

still the remote will not work yet

in /storage/.config/lircd.conf you will find entries like

KEY_CHANNELUP 0x00FE906F 0x00000000

remove the second column from all key entries, save the file, exit and reboot

the remote should now work


Tiny Pi Zero



Video from Raspberry Pi Foundation

We have a bunch of L227WT 22″ panels around. Some weeks ago one of them began to flicker when turning on and finally quit working at all.

See this video on how to open the casing:

The repair kit came from

Firmware files for DVB hardware usually go to /lib/firmware. On OpenELEC the filesystem is read only. Therefore copy the firmware file to /storage/.config/firmware. OpenELEC will find it during boot.

Ssh into the remote machine running OpenELEC and create a directory: mkdir /storage/.config/firmware

Use scp for the file transfer: scp /home/elektrozwerg/Downloads/<firmwarefile.fw> root@<IP>:/storage/.config/firmware/
Reboot the machine running OpenELEC. Ssh into it again and check boot messages: dmesg

You might see something like:

[   12.382068] dvb-usb: downloading firmware from file ‘dvb-usb-dib0700-1.20.fw’
[   12.518339] dib0700: firmware started successfully.
[   13.019503] dvb-usb: found a ‘Pinnacle PCTV 73e’ in warm state.
[   13.019742] dvb-usb: will pass the complete MPEG2 transport stream to the software demuxer.
[   13.019949] DVB: registering new adapter (Pinnacle PCTV 73e)
[   13.236852] usb 1-2.1: DVB: registering adapter 0 frontend 0 (DiBcom 7000PC)…
[   13.457245] DiB0070: successfully identified
[   13.493124] Registered IR keymap rc-dib0700-rc5
[   13.494702] input: IR-receiver inside an USB DVB receiver as /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2.1/rc/rc1/input12
[   13.495026] rc1: IR-receiver inside an USB DVB receiver as /devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2.1/rc/rc1
[   13.495259] dvb-usb: schedule remote query interval to 50 msecs.
[   13.495267] dvb-usb: Pinnacle PCTV 73e successfully initialized and connected.
[   13.495439] usbcore: registered new interface driver dvb_usb_dib0700

Most of the steps refer to Kodi (OpenElec) not Raspbmc

Wiring of the TSOP 38238


ssh into raspi

>mount /flash -o remount,rw

>nano /flash/config.txt

add the following to your config.txt:


reboot pi


Setup the IR-remote. I used this one:


ssh into raspi again

>killall lircd
>irrecord /storage/.config/lircd.conf

follow the instruction of irrecord


A known trick to proof if youre IR-remote is basically working (maybe we used dead batteries) is to check it with your smartphone’s camera. The infrared light will be visible.



# Please make this file available to others
# by sending it to <>
# this config file was automatically generated
# using lirc-0.9.1-git(default) on Sat Mar 21 14:32:08 2015
# contributed by 
# brand:                       /storage/.config/lircd.conf
# model no. of remote control: hauppauge! 
# devices being controlled by this remote: Kodi

begin remote

  name  /storage/.config/lircd.conf
  bits           13
  eps            30
  aeps          100

  one           898   875
  zero          898   875
  plead         898
  gap          114272
  toggle_bit_mask 0x800

      begin codes
          KEY_POWER                0x17FD
          KEY_NUMERIC_1            0x17C1
          KEY_NUMERIC_2            0x17C2
          KEY_NUMERIC_3            0x17C3
          KEY_NUMERIC_4            0x17C4
          KEY_NUMERIC_5            0x17C5
          KEY_NUMERIC_6            0x17C6
          KEY_NUMERIC_7            0x17C7
          KEY_NUMERIC_8            0x17C8
          KEY_NUMERIC_9            0x17C9
          KEY_NUMERIC_0            0x17C0
          KEY_EXIT                 0x17DF
          KEY_MENU                 0x17CD
          KEY_RED                  0x17CB
          KEY_GREEN                0x17EE
          KEY_YELLOW               0x17F8
          KEY_BLUE                 0x17E9
          KEY_UP                   0x17E0
          KEY_DOWN                 0x17E1
          KEY_LEFT                 0x17D1
          KEY_RIGHT                0x17D0
          KEY_OK                   0x17E5
          KEY_MUTE                 0x17CF
          KEY_REWIND               0x17F2
          KEY_PLAY                 0x17F5
          KEY_FASTFORWARD          0x17F4
          KEY_RECORD               0x17F7
          KEY_STOP                 0x17F6
          KEY_PAUSE                0x17F0
      end codes

end remote



Evil noise and crackles when turning the knobs… A quick disassembly, a short ‘Pffffffffft’ with the spray (Teslanol T6 ‘Oszillin’) and voila it’s fixed!

P1030182 P1030184 P1030186 P1030187

The Spray did the job perfectly! It was recommended on a famous German discussion board (search for “Kratzende Potis”)


Arduino Day

c’t hacks

Arduino – The Documentary



TFT-Maximite + RFM12B

A JeeNode (which is an Arduino compatible board + RFM12B radio module) receives data from my weather station.


The JeeNode listens to an 868MHz radio link and is connected to the serial port of the Maximite.


Jeenode          Maximite
GND      -----   GND
+5V      -----   +5V
RX       -----   Pin15
TX       -----   Pin16


print "opening com1..."
open "com1:9600" as #1
print "waiting for incoming data..."
dat$ = ""
avail = 0


  if ( LOC(#1) >= 55 ) then
    while ( not EOF(#1) )
      dat$ = dat$ + input$(1, #1)
    if ( len(dat$) >= 55 ) then
      avail = 1

  if ( avail = 1 ) then
    ' cut off leading #13#10 
    dat$ = mid$(dat$, instr(dat$, "RECV:"), 55)
    print time$ + " " + dat$
    dat$ = ""
    avail = 0

  pause 100   

close #1

P1020950 P1020953


This is the 5″ TFT-Maximite Kit built by Geoff Graham and Carsten Meyer.