8bitdo FC30/NES30 Bluetooth Controller and Lakka

Installed OpenELEC 5.0.8 (arm) Diskimage on my rPi1 and added RetroArch following this guide http://misapuntesde.com/post.php?id=502. I connected my 8bitdo NES30 gamepad via bluetooth (Mode START+R), it shows as trusted and connected in OpenELEC Settings > Bluetooth. When I press the D-pad buttons inside OpenELEC the mouse pointer wakes, recording here: https://goo.gl/photos/gMwWQaqji6qwJpNP7. RetroArch do NOT see the gamepad at all.

I searched the OpenElec forums for 8bitdo and nes30. There are several forum threads about peolpe wanting to use the 8bitdo nes30 gamepad via bluetooth inside OpenElec/Kodi and with RetroArch as an addon, but there are no solutions on how to make it work. http://openelec.tv/forum/search?query=8bitdo&childforums=1 http://openelec.tv/forum/search?query=nes30&childforums=1

Hi paalfe. When you pair the controller via bluetoothctl, do you see it as js0? We need to check if the problem is on the bluetooth side or the RA side.

When the controller is connected via bluetooth I do get /dev/input/event2, /dev/input/js0 and /dev/input/mouse1. screenshot: https://mrkr.io/Fkrbi3rgAw

Here are some “udevadm info -an /dev/input/js0” results:

  • OS = Lakka with 8bitdo SFC30 gamepad connected via Bluetooth (START+R): RetroArch do NOT see the controller - http://pastebin.com/TLd1U6eJ.
  • OS = OpenELEC with 8bitdo NES30 gamepad connected via Bluetooth (START+R): RetroArch do NOT see the controller - http://pastebin.com/raaSCCD5.
  • OS = Ubuntu with 8bitdo NES30 gamepad connected via Bluetooth (START+R): RetroArch DO see the controller, both for manual mapping and in autoconfig - http://pastebin.com/by99JB2u.

Thanks for the info. I see some differences in the udevadm info, but I can’t make sure if they are due to the difference of hardware (one time you use PC, one time you use RPi, and not the same USB port).

Do you still get a message like “BLUETOOTH HID v1.00 Keyboard” in your dmesg? If so, can you try to bind manually in RetroKeyboard mode in RA?

The message “unknown main item tag 0x0” searched on google brings results about timeout or device going idle.

[QUOTE=Kivutar;26270]Thanks for the info. I see some differences in the udevadm info, but I can’t make sure if they are due to the difference of hardware (one time you use PC, one time you use RPi, and not the same USB port).

Do you still get a message like “BLUETOOTH HID v1.00 Keyboard” in your dmesg? If so, can you try to bind manually in RetroKeyboard mode in RA?

The message “unknown main item tag 0x0” searched on google brings results about timeout or device going idle.[/QUOTE]

I have now done testing on the same hardware with everyting connected at the same USB ports and using only 8Bitdo NES30 (Firmware v2.61 - 2015-06-06) via bluetooth (START+R). Lakka installed on internal SSD and Ubuntu livebooting from USB storage.


PC1 booting Lakka-Generic.x86_64-devel-20150728020643-r21120-gb6541ab from internal SSD.


###########################################
# Lakka - The DIY retro emulation console #
# ...... visit http://www.lakka.tv ...... #
###########################################


Lakka (unofficial) Version: devel-20150728020643-r21120-gb6541ab
Lakka git: b6541ab0fd2582d6c53b3f2d016750ffad31df14


Lakka:~ # ls -alh /dev/input/ ; 	# Before connecting and trusting 8Bitdo NES30 via Bluetooth (START+R).
total 0
drwxr-xr-x    4 root     root         280 Aug  2  2015 .
drwxr-xr-x   16 root     root        3.6K Aug  2  2015 ..
drwxr-xr-x    2 root     root          80 Aug  2  2015 by-id
drwxr-xr-x    2 root     root          80 Aug  2  2015 by-path
crw-rw----    1 root     input      13,  64 Aug  2  2015 event0
crw-rw----    1 root     input      13,  65 Aug  2  2015 event1
crw-rw----    1 root     input      13,  66 Aug  2  2015 event2
crw-rw----    1 root     input      13,  67 Aug  2  2015 event3
crw-rw----    1 root     input      13,  68 Aug  2  2015 event4
crw-rw----    1 root     input      13,  69 Aug  2  2015 event5
crw-rw----    1 root     input      13,  70 Aug  2  2015 event6
crw-rw----    1 root     input      13,  71 Aug  2  2015 event7
crw-rw----    1 root     input      13,  63 Aug  2  2015 mice
crw-rw----    1 root     input      13,  32 Aug  2  2015 mouse0


Lakka:~ # ls -alh /dev/input/ ; 	# After connecting and trusting 8Bitdo NES30 via Bluetooth (START+R).
total 0
drwxr-xr-x    4 root     root         340 Aug  2 18:15 .
drwxr-xr-x   16 root     root        3.7K Aug  2 18:15 ..
drwxr-xr-x    2 root     root          80 Aug  2  2015 by-id
drwxr-xr-x    2 root     root          80 Aug  2  2015 by-path
crw-rw----    1 root     input      13,  64 Aug  2  2015 event0
crw-rw----    1 root     input      13,  65 Aug  2  2015 event1
crw-rw----    1 root     input      13,  66 Aug  2  2015 event2
crw-rw----    1 root     input      13,  67 Aug  2  2015 event3
crw-rw----    1 root     input      13,  68 Aug  2  2015 event4
crw-rw----    1 root     input      13,  69 Aug  2  2015 event5
crw-rw----    1 root     input      13,  70 Aug  2  2015 event6
crw-rw----    1 root     input      13,  71 Aug  2  2015 event7
crw-rw----    1 root     input      13,  72 Aug  2 18:15 event8
crw-rw-r--    1 root     input      13,   0 Aug  2 18:15 js0
crw-rw----    1 root     input      13,  63 Aug  2  2015 mice
crw-rw----    1 root     input      13,  32 Aug  2  2015 mouse0
crw-rw----    1 root     input      13,  33 Aug  2 18:15 mouse1

dmesg

http://pastebin.com/H9BF18dr

udevadm info -an /dev/input/js0

http://pastebin.com/qdmNa9j5


# cat /dev/input/js0 ; 	# Weird symbols appear when I press the buttons on the gamepad, this means it is working.
�U��U��U��U��U��U��U��U��U�U�	�U�
�U�
   �U�
�U��U��U��U��U��U��U��U��U��U��U��U��U���U���U��U�j��U�ˡ�U"��U����U�U���Uѥ�U���U��Uv��UUi��Uʩ�U>��U���U��U
��U
���U
T��U
      ୒U
         ���U���U﯒U���U^C

Bind Mode “RetroKeyboard” do not work.

Photo showing User 1 Device Index = N/A (Port #0) New photo by Pål F. Kristiansen

The Gamepad do NOT work in RetroArch, not manual mapping (RetroPad or RetroKeyboard) and not Autoconfig.


PC1 booting ubuntu-14.04.2-desktop-amd64 from live USB (no updates) + ssh-server + RetroArch installed from https://launchpad.net/~libretro/+archive/ubuntu/stable.


Welcome to Ubuntu 14.04.2 LTS (GNU/Linux 3.16.0-30-generic x86_64)


 * Documentation:  https://help.ubuntu.com/




ubuntu@ubuntu:~$ ls -alh /dev/input/ ; 	# Before connecting and trusting 8Bitdo NES30 via Bluetooth (START+R).
total 0
drwxr-xr-x  4 root root    280 Aug  2 19:41 .
drwxr-xr-x 17 root root   4.2K Aug  2 19:41 ..
drwxr-xr-x  2 root root     80 Aug  2  2015 by-id
drwxr-xr-x  2 root root     80 Aug  2  2015 by-path
crw-r-----  1 root root 13, 64 Aug  2 19:35 event0
crw-r-----  1 root root 13, 65 Aug  2 19:35 event1
crw-r-----  1 root root 13, 66 Aug  2 19:35 event2
crw-r-----  1 root root 13, 67 Aug  2 19:35 event3
crw-r-----  1 root root 13, 68 Aug  2 19:35 event4
crw-r-----  1 root root 13, 69 Aug  2 19:35 event5
crw-r-----  1 root root 13, 70 Aug  2 19:35 event6
crw-r-----  1 root root 13, 71 Aug  2 19:35 event7
crw-r-----  1 root root 13, 63 Aug  2 19:35 mice
crw-r-----  1 root root 13, 32 Aug  2 19:35 mouse0


ubuntu@ubuntu:~$ ls -alh /dev/input/ ; 	# After connecting and trusting 8Bitdo NES30 via Bluetooth (START+R).
total 0
drwxr-xr-x   4 root root    340 Aug  2 19:42 .
drwxr-xr-x  17 root root   4.2K Aug  2 19:42 ..
drwxr-xr-x   2 root root     80 Aug  2  2015 by-id
drwxr-xr-x   2 root root     80 Aug  2  2015 by-path
crw-r-----   1 root root 13, 64 Aug  2 19:35 event0
crw-r-----   1 root root 13, 65 Aug  2 19:35 event1
crw-r-----   1 root root 13, 66 Aug  2 19:35 event2
crw-r-----   1 root root 13, 67 Aug  2 19:35 event3
crw-r-----   1 root root 13, 68 Aug  2 19:35 event4
crw-r-----   1 root root 13, 69 Aug  2 19:35 event5
crw-r-----   1 root root 13, 70 Aug  2 19:35 event6
crw-r-----   1 root root 13, 71 Aug  2 19:35 event7
crw-rw----+  1 root root 13, 72 Aug  2 19:42 event8
crw-rw-r--+  1 root root 13,  0 Aug  2 19:42 js0
crw-r-----   1 root root 13, 63 Aug  2 19:35 mice
crw-r-----   1 root root 13, 32 Aug  2 19:35 mouse0
crw-rw----+  1 root root 13, 33 Aug  2 19:42 mouse1

dmesg

http://pastebin.com/wFRBKQd1

udevadm info -an /dev/input/js0

http://pastebin.com/myQ92BLB


$ cat /dev/input/js0 ; 	# Weird symbols appear when I press the buttons on the gamepad, this means it is working.
�	��	��	��	��	��	��	��	��	�	�	�	�
�	�
         �	�
�      ��     ��	��	��	��	��	��	��	���	���	���	���	���	���	��	�!	!	!	�!	�"	�#	�#	�$	�$	��$	�0%	0%	�'	 (	�(	�(	`)	�)	L*	�*	<-	�-	P.	/	L0	
�0	
h1	
          �1	
                 ^C

Bind Mode “RetroKeyboard” is not necessary, RetroPad works fine.

Video showing User 1 Device Index = N/A (Port #0), but it is working (manual mapping and autoconfig) ?! https://goo.gl/photos/Nw15thjc33JvF6LV6

Installed package “joystick” and “jstest-gtk”, it shows and works fine there. New photo by Pål F. Kristiansen

The Gamepad works fine in RetroArch (manual mapping and autoconfig).

Morning!

I have been trying to get my 8bitdo NES controller to work and I have looked through this but can’t quite understand what I need to do to make it work right. It connects fine and the Dpad works but can’t bind the A’s and B’s etc.

Any direction to get me going?

[QUOTE=zoomy942;26413]Morning!

I have been trying to get my 8bitdo NES controller to work and I have looked through this but can’t quite understand what I need to do to make it work right. It connects fine and the Dpad works but can’t bind the A’s and B’s etc.

Any direction to get me going?[/QUOTE]

This is the problem this forum thread is trying to solve, there is at the moment no solution on the problem. When a solution is found it will probably be posted here.

In mode1 (powered on with START) the D-pad works as arrow keys (keyboard), therefor the D-pad works. For the D-pad to work as a joystick, you need to power it on with START+R (requires firmware v2.52 or newer).

Firmware updates and instructions for the modes is found at http://8bitdo.com/.

The version of Lakka available for download via the wizard on http://www.lakka.tv/ is from 05-29-2015 and is missing most of the autoconfigs for the 8bitdo gamepads (it includes 8bitdo NES30 USB mode autoconfig), instructions for upgrading to nightly builds (includes all 8bitdo autoconfigs) is here http://www.lakka.tv/doc/Upgrading-Lakka/. Still only USB mode is working in Lakka, bluetooth with 8bitdo do not work at moment in Lakka.


If this worked it could be a workaround till a solution is found: Power on the gamepads with START+B (keyboard mode player 1) or START+B+R (keyboard mode player 2) and map the buttons manually in Lakka / RetroArch. 8bitdo SFC30 Bluetooth GamePad Manual: http://8bitdo.com/sfc30/manual.html.

[TABLE=“class: grid, width: 500, align: left”]

Lakka / RetroArch RetroPad 8bitdo (START+B) keyboard mode 8bitdo (START+B+R) keyboard mode (2P)

B J U

Y I T

Select N X

Start O Y

Up C P

Down D Q

Left E R

Right F A

A G B

X H S

L K V

R M W

[/TABLE]

I have now tested Mode START+B (keyboard mode player 1) and Mode START+B+R (keyboard mode player 2) with 8bitdo FC30, SFC30, NES30 and SNES30 on Lakka and on Ubuntu 14.04. The bluetooth connection fail to stay connected, so these modes do not work with Linux.

I see the latest firmware v2.62 (2015-07-23) has fixed the bug that it can’t be used on Mac with keyboard mode(START+B or START+B+R). I flashed my gamepads with this version, but it did not help. The gamepads disconnect as soon as they connect.

[QUOTE=paalfe;26438]I have now tested Mode START+B (keyboard mode player 1) and Mode START+B+R (keyboard mode player 2) with 8bitdo FC30, SFC30, NES30 and SNES30 on Lakka and on Ubuntu 14.04. The bluetooth connection fail to stay connected, so these modes do not work with Linux.

I see the latest firmware v2.62 (2015-07-23) has fixed the bug that it can’t be used on Mac with keyboard mode(START+B or START+B+R). I flashed my gamepads with this version, but it did not help. The gamepads disconnect as soon as they connect.[/QUOTE]

I stumbled across your post as I was attempting to resolve the same issue I was having with an 8bitdo SNES30, emulationstation, and retroarch, running via Retrosmc (a tool for installing most of RetroPie on OSMC for Raspberry Pi 2. In the end, this post plus a couple others helped me put together enough information to create a workaround solution. I linked my full explanation below. Hope it works for you. Enjoy!

http://forum.8bitdo.com/forum.php?mod=redirect&goto=findpost&ptid=475&pid=1837&fromuid=507

PROBLEM SOLVED :smiley: Big thanks goes to jboy01.

To make Lakka see the 8Bitdo controllers when connected via BlueTooth, you need to add some udev rules to the file “10-local.rules” in “smb://lakka/configfiles/udev.rules.d/” or “/storage/.config/udev.rules.d/” or “/etc/udev/rules.d/”.

The three locations above is the exact same location.

  • smb://lakka/configfiles/” is the Samba network share for “/storage/.config/”.
  • /etc/udev/rules.d/” is a symbolic link to “/storage/.config/udev.rules.d/”.

The needed udev rules is found at / moved to the forum thread “8Bitdo Gamepad autoconfigs (udev)” - http://libretro.com/forums/showthread.php?t=3649. (Moved so it would be easier to maintain)

Nice. Thank you jboy1 and paalfe.

Is there a solution to keep the NES30 Controller paired after a reboot? Bluetooth connection works fine when set up via SSH. But i have to repeat the procedure every time i restart my Pi3.

Not yet, this is a known bug.

A workaround I used was to create an autostart.sh file in the .config directory after manual pairing via the CLI. Here’s the entirety of the script. “( bluetoothctl; connect ADDRESS1; connect ADDRESS2 ) &”

Just make sure the joypads are plugged in and/or turned on while booting or rebooting the pi.

Hello there! Just trying to get my 8bitdo SNES30 controller working after a reboot with Lakka. I’ve written the autostart.sh script and have it working when I run it manually. But, it looks like the recent versions of RetroArch do not consider this file or the .config location on startup. Does anyone know where i can fire up this script on startup aside from there? I’ve thought about potentially just adding this script to cron, but it’d have to run every minute or so and who knows how taxing on the system would be.

Any thoughts/ideas on this? Loving the software, but this has been the biggest hiccup for me so far.

Any updates on the issue with the 8Bitdo controllers reconnecting automatically after a reboot? I have the NES30 Pro and I can SSH in and manually connect them every time. They don’t stay though.

I don’t have this problem with RetroPie. They reconnect every time without issue.

The temp solution offered by Sdogg doesn’t seem to work anymore. I tried to put the autostart.sh file in my .config folder and it doesn’t work.

My Dualshock controller automatically connects every time no problem. Is there some way to maybe mirror what is happening with the Dualshock controller?

The only way I’ve gotten it to stick is to connect and trust multiple times,. connect, trust, turn on/off controller., test. rinse/repeat until it sticks. you may need to restart in between a few attempts. Once it sticks, it’s fine unless you update the controllers or connect that controller to another device.,

not ideal, and seems crazy, but does work for me., I’m on pi3 w/ 2.1 RC4. hope it works for you.

Hi, i have the same issue with Lakka 2.1 RC4 on RPI3. I have no problems with Dualshock 3 but my 8bitdo FC30 (Zero) need to be pairing with this method (http://www.lakka.tv/doc/8Bitdo-Wireless-Controller/) after each reboot. It a bit annoying :-/

Yeah. I can’t get it to stick no matter how many times I try. Here’s a breakdown of what’s going on.

Turn on the Pi, login via SSH, and run bluetoothctl.

login as: root
[email protected]'s password:
###########################################
# Lakka - The DIY retro emulation console #
# ...... visit http://www.lakka.tv ...... #
###########################################

Lakka (community) Version: 2.1-rc4
Lakka:~ # bluetoothctl
[NEW] Controller B8:27:EB:B6:4A:F8 BlueZ 5.43 [default]
[NEW] Device E4:17:D8:4A:06:7A 8Bitdo NES30 Pro
[NEW] Device E4:17:D8:C3:06:7A 8Bitdo NES30 Pro
[NEW] Device 04:98:F3:B4:02:51 PLAYSTATION(R)3 Controller

Turn on Controller 1 and then Controller 2.

[CHG] Device E4:17:D8:C3:06:7A Connected: yes
[CHG] Device E4:17:D8:4A:06:7A Connected: yes

Says connected but not working…

Turn off Controller 1 and then Controller 2

[CHG] Device E4:17:D8:4A:06:7A Connected: no
[CHG] Device E4:17:D8:C3:06:7A Connected: no

Turn on Controller 1 and then Controller 2 again:

[CHG] Device E4:17:D8:4A:06:7A Connected: yes
[CHG] Device E4:17:D8:C3:06:7A Connected: yes

Still not working.

Manually type commands to connect to both controllers:

[8Bitdo NES30 Pro]# connect E4:17:D8:4A:06:7A
Attempting to connect to E4:17:D8:4A:06:7A
Connection successful
[CHG] Device E4:17:D8:4A:06:7A ServicesResolved: yes
[8Bitdo NES30 Pro]# connect E4:17:D8:C3:06:7A
Attempting to connect to E4:17:D8:C3:06:7A
Connection successful
[CHG] Device E4:17:D8:C3:06:7A ServicesResolved: yes
[8Bitdo NES30 Pro]# trust E4:17:D8:4A:06:7A
Changing E4:17:D8:4A:06:7A trust succeeded
[8Bitdo NES30 Pro]# trust E4:17:D8:C3:06:7A
Changing E4:17:D8:C3:06:7A trust succeeded

Controllers both connected and work. Notice how it said “ServicesResolved: yes” this time. This only happens when I manually type the connect commands.

Now turn them both off

[CHG] Device E4:17:D8:4A:06:7A ServicesResolved: no
[CHG] Device E4:17:D8:4A:06:7A Connected: no
[CHG] Device E4:17:D8:C3:06:7A ServicesResolved: no
[CHG] Device E4:17:D8:C3:06:7A Connected: no

Turn both controllers back on but get no response in terminal. Turn them off and on multiple times. Still nothing. Not even a “Connected: yes” like I initially got.

Turn them both back on and try to manually connect.

[bluetooth]# connect E4:17:D8:4A:06:7A
Attempting to connect to E4:17:D8:4A:06:7A
[CHG] Device E4:17:D8:4A:06:7A Connected: yes
Connection successful
[CHG] Device E4:17:D8:4A:06:7A ServicesResolved: yes
[8Bitdo NES30 Pro]# connect E4:17:D8:C3:06:7A
Attempting to connect to E4:17:D8:C3:06:7A
[CHG] Device E4:17:D8:C3:06:7A Connected: yes
Connection successful
[CHG] Device E4:17:D8:C3:06:7A ServicesResolved: yes
[8Bitdo NES30 Pro]# trust E4:17:D8:4A:06:7A
Changing E4:17:D8:4A:06:7A trust succeeded
[8Bitdo NES30 Pro]# trust E4:17:D8:C3:06:7A
Changing E4:17:D8:C3:06:7A trust succeeded

Manually connected and both controllers working fine again. Notice how I got the “Connected: yes” and the “ServicesResolved: yes”.

Turn both controllers off.

[CHG] Device E4:17:D8:4A:06:7A ServicesResolved: no
[CHG] Device E4:17:D8:4A:06:7A Connected: no
[CHG] Device E4:17:D8:C3:06:7A ServicesResolved: no
[CHG] Device E4:17:D8:C3:06:7A Connected: no

Turn both controllers back on.

[CHG] Device E4:17:D8:4A:06:7A Connected: yes
[CHG] Device E4:17:D8:C3:06:7A Connected: yes

Not working. Got the “Connected: yes” this time but not the "ServicesResolved: yes"

Manually connect them again.

[8Bitdo NES30 Pro]# connect E4:17:D8:4A:06:7A
Attempting to connect to E4:17:D8:4A:06:7A
Connection successful
[CHG] Device E4:17:D8:4A:06:7A ServicesResolved: yes
[8Bitdo NES30 Pro]# connect E4:17:D8:C3:06:7A
Attempting to connect to E4:17:D8:C3:06:7A
Connection successful
[CHG] Device E4:17:D8:C3:06:7A ServicesResolved: yes

Both controllers working fine again.

I have also tried this with booting the Pi up with the controllers already powered on. Makes no difference.

I think I’ve fixed my problem.

Turned on Pi, ran bluetoothctl, put controller back in pairing mode, typed “pair E4:17:D8:4A:06:7A”, then “connect E4:17:D8:4A:06:7A”, then “trust E4:17:D8:4A:06:7A”.

Did the same for the second controller and it works fine now too.

I did the pair command during initial setup but I guess it either didn’t take or I messed something up along the way. I’m just glad it’s working now.

So it seems that the “pair <device_addr>” command was all I needed. Just hope it sticks this time.

Also, as a side note. Something I was confused on the first time I did it and I think it would help for some people if it were clarified. On the page http://www.lakka.tv/doc/8Bitdo-Wireless-Controller/ there’s is mention at the bottom to use the “pair” command but it just says “pair”. I think it would be clearer for people if it were stated in the same format as the previous commands. Make it say “pair <device_addr>” otherwise it just looks like you just want people to type the word “pair” and nothing following it.