2016-07-21, 11:55
Hi guys
I bought and built an Adafruit PiGRRL2. This emulator enclosure runs a retropie 4.0 beta2 over a raspbian Jessie. I actually took retropie latest image.
Everything works fine from a game emulation point of view.
Then, I installed kodi 16.1 with retropie built in installer. I had some issue to setup the small 2.8" lcd display but I finally succeeded.
Unfortunately I am now stuck with the keyboard. Of course I'd like to use the builtin "joypad" (which is actually a virtual keyboard) but it seems it is not recognized by Kodi.
This joypad offers 16 keys (up, down, left, right, start, select, A, B, X, Y and a few others). It is connected to the Rpi2 via GPIO. To be usable someone at Adafruit wrote a C program to make it recognized as a virtual keyboard using uevent. Basically this utility maps gpio connected buttons to keyboard event.
Interesting part of retrogame.c:
Here is what I get when I do a "cat /proc/bus/input/devices":
Bloc #1 is the not-used touch screen.
Bloc #2 and #3 are a wireless usb keyboard and mouse
Bloc #4 is the device joypad which is causing trouble
Listing my /dev/input:
and after a "dmesg":
Kernel modules:
+
I then went to Kodi wiki to try to figure out how to make my joypad seen by Kodi. I read a lot about keymaps, keyboard.xml and so on... without success.
Anyway, one of the first thing I checked was kodi.log in debug mode.
Kodi startup:
http://pastebin.com/jg0vzt8y
With my wireless keyboard plugged in, I was able to see keycodes received by Kodi. Nothing with the joypad:
Then, I went to a more basic layer: checking system in console via "showkey":
Wireless keyboard:
PiGRRL2 joypad using retrogame.c:
I forgot to mention that I set a French azerty keyboard layout in both system and Kodi. I use to choose this layout which works fine so far on other systems.
I'm a bit dry now. I hope my (first) post is clear enough and that it would be helpfull. I'd really appreciate. Don't blame me too much if I missed something. Thank you for reading.
I bought and built an Adafruit PiGRRL2. This emulator enclosure runs a retropie 4.0 beta2 over a raspbian Jessie. I actually took retropie latest image.
Code:
pi@retropie ~ $ uname -a
Linux retropie 4.4.15-v7+ #897 SMP Tue Jul 12 18:42:55 BST 2016 armv7l GNU/Linux
Everything works fine from a game emulation point of view.
Then, I installed kodi 16.1 with retropie built in installer. I had some issue to setup the small 2.8" lcd display but I finally succeeded.
Unfortunately I am now stuck with the keyboard. Of course I'd like to use the builtin "joypad" (which is actually a virtual keyboard) but it seems it is not recognized by Kodi.
This joypad offers 16 keys (up, down, left, right, start, select, A, B, X, Y and a few others). It is connected to the Rpi2 via GPIO. To be usable someone at Adafruit wrote a C program to make it recognized as a virtual keyboard using uevent. Basically this utility maps gpio connected buttons to keyboard event.
Interesting part of retrogame.c:
Code:
ioStandard[] = {
// This pin/key table is used when the PiTFT isn't found
// (using HDMI or composite instead), as with our original
// retro gaming guide.
// Input Output (from /usr/include/linux/input.h)
{ 4, KEY_LEFT }, // Joystick (4 pins)
{ 19, KEY_RIGHT },
{ 16, KEY_UP },
{ 26, KEY_DOWN },
{ 15, KEY_LEFTCTRL }, // A/Fire/jump/primary/RED
{ 14, KEY_LEFTALT }, // B/Bomb/secondary/YELLOW
{ 20, KEY_LEFTSHIFT}, // X/BLUE
{ 18, KEY_W }, // Y/GREEN
{ 5, KEY_RIGHTCTRL}, // Select
{ 6, KEY_ENTER }, // Start
{ 12, KEY_A }, // L Shoulder
{ 13, KEY_S }, // R Shoulder
{ 17, KEY_ESC }, // Exit ROM PiTFT Button 1
{ 22, KEY_KP5 }, // PiTFT Button 2
{ 23, KEY_KPMINUS }, // PiTFT Button 3
{ 27, KEY_F12 }, // PiTFT Button 4
// For credit/start/etc., use USB keyboard or add more buttons.
{ -1, -1 } }; // END OF LIST, DO NOT CHANGE
Here is what I get when I do a "cat /proc/bus/input/devices":
Code:
I: Bus=0018 Vendor=0000 Product=0000 Version=0000
N: Name="stmpe-ts"
P: Phys=stmpe-ts/input0
S: Sysfs=/devices/platform/soc/3f204000.spi/spi_master/spi0/spi0.1/stmpe-ts/input/input0
U: Uniq=
H: Handlers=mouse0 event0
B: PROP=0
B: EV=b
B: KEY=400 0 0 0 0 0 0 0 0 0 0
B: ABS=1000003
I: Bus=0003 Vendor=04d9 Product=2519 Version=0110
N: Name="2.4G Wireless Touchpad Keyboard"
P: Phys=usb-3f980000.usb-1.4/input0
S: Sysfs=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4:1.0/0003:04D9:2519.0001/input/input2
U: Uniq=
H: Handlers=sysrq kbd leds event2
B: PROP=0
B: EV=120013
B: KEY=10000 7 ff9f207a c14057ff febeffdf ffefffff ffffffff fffffffe
B: MSC=10
B: LED=7
I: Bus=0003 Vendor=04d9 Product=2519 Version=0110
N: Name="2.4G Wireless Touchpad Keyboard"
P: Phys=usb-3f980000.usb-1.4/input1
S: Sysfs=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.4/1-1.4:1.1/0003:04D9:2519.0002/input/input3
U: Uniq=
H: Handlers=kbd mouse1 event3
B: PROP=0
B: EV=1f
B: KEY=3f 3007f 0 0 0 0 483ffff 17aff32d bf544446 0 0 1f0001 130f93 8b17c000 677bfa d941dfed 9ed680 4400 0 10000002
B: REL=1c3
B: ABS=1 0
B: MSC=10
I: Bus=0003 Vendor=0001 Product=0001 Version=0001
N: Name="retrogame"
P: Phys=
S: Sysfs=/devices/virtual/input/input5
U: Uniq=
H: Handlers=kbd event1
B: PROP=0
B: EV=3
B: KEY=1682 1001400 1000400 f0020002
Bloc #1 is the not-used touch screen.
Bloc #2 and #3 are a wireless usb keyboard and mouse
Bloc #4 is the device joypad which is causing trouble
Listing my /dev/input:
Code:
pi@retropie ~/ $ ll /dev/input/
total 0
drwxr-xr-x 2 root root 100 Jul 20 02:17 by-id
drwxr-xr-x 2 root root 120 Jul 20 02:17 by-path
crw-rw---- 1 root input 13, 64 Jul 20 02:11 event0
crw-rw---- 1 root input 13, 65 Jul 20 02:29 event1
crw-rw---- 1 root input 13, 66 Jul 20 02:17 event2
crw-rw---- 1 root input 13, 67 Jul 20 02:17 event3
crw-rw---- 1 root input 13, 63 Jul 20 02:11 mice
crw-rw---- 1 root input 13, 32 Jul 20 02:11 mouse0
crw-rw---- 1 root input 13, 33 Jul 20 02:17 mouse1
and after a "dmesg":
Code:
[ 1127.158690] input: retrogame as /devices/virtual/input/input5
Kernel modules:
Code:
Module Size Used by
cfg80211 427855 0
rfkill 16037 1 cfg80211
evdev 11396 8
joydev 9024 0
stmpe_ts 3929 0
snd_bcm2835 20511 0
snd_pcm 75698 1 snd_bcm2835
snd_timer 19160 1 snd_pcm
snd 51844 3 snd_bcm2835,snd_timer,snd_pcm
bcm2835_wdt 3225 0
gpio_backlight 2427 0
bcm2835_gpiomem 3040 0
spi_bcm2835 6678 0
uio_pdrv_genirq 3164 0
uio 8000 1 uio_pdrv_genirq
fb_ili9340 3204 1
fbtft 26084 1 fb_ili9340
syscopyarea 2945 1 fbtft
sysfillrect 3443 1 fbtft
sysimgblt 2069 1 fbtft
fb_sys_fops 1309 1 fbtft
i2c_dev 5859 0
uinput 7454 1
fuse 83461 1
ipv6 347530 36
I then went to Kodi wiki to try to figure out how to make my joypad seen by Kodi. I read a lot about keymaps, keyboard.xml and so on... without success.
Anyway, one of the first thing I checked was kodi.log in debug mode.
Kodi startup:
http://pastebin.com/jg0vzt8y
With my wireless keyboard plugged in, I was able to see keycodes received by Kodi. Nothing with the joypad:
Code:
03:30:08 4752.533203 T:1944715840 NOTICE: Log level changed to "LOG_LEVEL_DEBUG_FREEMEM"
03:30:08 4752.533691 T:1944715840 NOTICE: Enabled debug logging due to GUI setting. Level 2.
03:30:08 4752.535645 T:1944715840 DEBUG: ------ Window Init () ------
03:30:11 4755.973633 T:1944715840 DEBUG: Keyboard: scancode: 0x6a, sym: 0x0113, unicode: 0x0000, modifier: 0x0
03:30:11 4755.974121 T:1944715840 DEBUG: OnKey: right (0xf083) pressed, action is Right
03:30:12 4756.935547 T:1944715840 DEBUG: Keyboard: scancode: 0x67, sym: 0x0111, unicode: 0x0000, modifier: 0x0
03:30:12 4756.935547 T:1944715840 DEBUG: OnKey: up (0xf080) pressed, action is Up
03:30:13 4757.434082 T:1944715840 DEBUG: Keyboard: scancode: 0x6c, sym: 0x0112, unicode: 0x0000, modifier: 0x0
03:30:13 4757.434570 T:1944715840 DEBUG: OnKey: down (0xf081) pressed, action is Down
03:30:13 4757.879395 T:1944715840 DEBUG: Keyboard: scancode: 0x69, sym: 0x0114, unicode: 0x0000, modifier: 0x0
03:30:13 4757.880371 T:1944715840 DEBUG: OnKey: left (0xf082) pressed, action is Left
Then, I went to a more basic layer: checking system in console via "showkey":
Wireless keyboard:
Code:
pi@retropie ~/ $ showkey -a
^[[D 24 0033 0x1b
91 0133 0x5b
58 0104 0x44
q 113 0161 0x71
PiGRRL2 joypad using retrogame.c:
Code:
pi@retropie ~/ $ showkey -a
^[[D 24 0033 0x1b
91 0133 0x5b
58 0104 0x44
q 113 0161 0x71
I forgot to mention that I set a French azerty keyboard layout in both system and Kodi. I use to choose this layout which works fine so far on other systems.
I'm a bit dry now. I hope my (first) post is clear enough and that it would be helpfull. I'd really appreciate. Don't blame me too much if I missed something. Thank you for reading.