I’m really desperate for some help with an issue that’s been kicking my backside for days.

To give some background - I have a Raspberry Pi 3B+. On it I have the latest RetroPie image (4.4). I’ve been using it to emulate some classic games successfully.

My mother was a fan of the classic Sega Mega Drive - but using a PS3 controller or other peripheral wasn’t what she was used to for nostalgia reasons.

So, I bought two regular Sega Mega Drive 3 button controllers off eBay. I then sent them away to some genius guy who could convert them to Bluetooth. He did a hell of a job. He installed a Bluetooth HC-06 module in each controller. The plan was to give the Pi to my mother for her to enjoy as a birthday present and give her the legit experience she had playing on the Mega Drive back in the day.

Problem is, this guy used this controller using Android to emulate rather than RetroPie. It worked fine.

Regardless, I thought it would be as simple as registering the Bluetooth controller on my Pi. Wrong. I get an error when connecting. Now, first thing I did was connect to an Android device and it works just fine. Here is the error on my Pi.

So, I’ve been trying for days to find a solution but this far, nothing seems to work. I've tried using bluetoothctl, but the error I get there is:

Failed to connect: org.bluez.Error.NotAvailable

The closest I’ve come to is actually connecting via this code:

sudo rfcomm connect hci0 00:18:E4:34:FD:B5

This actually stops the controller from flashing in pairing mode and connects - but RetroPie won’t recognise it as a controller and therefore I can’t control the GUI and map keys etc... plus, I am doing this while using a command on PuTTy. Not friendly for the older generation if this is the solution I have to do every time.

Now, I am technically minded and can follow instructions well - but I am a total noob at Linux. I can build my RetroPie image, and I can SSH into my Pi. I can even edit config files if necessary... but following some of the threads I have encountered while researching this issue has made my brain ache somewhat.

Is there someone/some people on this forum that can help me out in order to get a solution. I’d be most appreciative.


I understand that HC-06 will present itself as a serial port device, not as a HID. People making bluetooth gamepads using HC-05/HC-06 are sometimes "upgrading" the modules to run RN-42 firmware.

I suppose the first step is to figure out what kind of module you actually have. If you have an unmodified HC-06, it's actually possible that it connects just fine, only the key presses are transmitted as bytes over a serial port instead of Linux input events. There are programs which can convert serial to HID for popular devices, such as inputattach.


So I might be able to help. I just spent the evening getting bluetooth working on Pi zero connected to HC-06 on Arduino Uno and also from Android to the HC-06 and the Pi zero.

After an update on my laptop (I updated overnight so it was noticeable) the bluetooth access dropped out (just search Ubuntu 16.04 and apparently this has been a thing for ever ha! And looks like I have to either update to a new version (like 18+) or reinstall kernel making sure specific bluetooth modules are not omitted?)

So for now I am just using Android phone, Pi Zero W, Arduino Uno and ssh to move between them etc.

Also HC-06 can only be paired to one connection (as I have so far experienced) so I had to make sure anything previously paired was specifically unpaired (in bluetoothctl > remove XX:XX:XX:XX:XX:XX and replace XX's with any devices that have been connected in the past)

Also making your Pi controller (I mean the Pi's bluetooth is acting like a controller to access the HC-06 on the Sega 'controllers') 'discoverable on' in bluetoothctl so that you can connect it to the HC-06 helped. Then 'discoverable off' when paired. Also you want to 'trust XX:XX:XX:XX:XX:XX' ..

I wrote some notes out in my lab but I don't have them here so hopefully this helps a bit for now and let me know if I can offer any more input?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.