Custom JoyBus Device

What does it take to create a custom JoyBus device? This seems like a simple question but there are some details that will make your device easy for everyone to use.

Most folks are happy to create a custom controller maybe with a different button layout or maybe you want to use an Arcade style control panel, you don't need the information on this page. This is for those that are going to make their own game to use their custom hardware.

First Decide what your device ID is, please register it with me and I'll publish it on the site so it's centralized. If this becomes popular it may move to a more official repository.

Then determine the commands you want to support.

Any official joybus device should implement the commands

  1. 0x00 (Identify)

  2. 0xFF (Reset + Identify).

Even if your hardware doesn't Reset anything, just respond with the Identify part of the command.

Choose any "Unknown" command values from this page, please register it with me and I'll publish it so it's centralized.

Technically you can use them however you like, but the following tips may be helpful.

  • Read = 1 command

  • Write = 1 command

  • Read and Write = 2 commands

  • Reading/Writing from different areas in your device could use one command for each area.

  • Official devices used a maximum of 32 bytes of read or write data, although up to 48 bytes should work fine.

  • The bit rate over JoyBus is 250,000 bits/second or 31,250 bytes.

  • The "effective" data rate will be lower maybe 20,000 bytes/second, this would be on a "loading" screen, so no/minimal other things happening at the same time.