(^ that's a short-link to this page, so you can open it in Linux)
Some users are discussing this guide in #hacking on the JoyConDroid Discord: https://discord.gg/SQNEx9v.
DO NOT ask for, or share links to, Amiibo bins in the comments! They will be removed. Thank you for understanding.
(Windows|Linux PC) + JoyControl + Bluetooth = AMIIBO EMULATION
- English: StandardX Incognito Mode - How To Emulate Your Amiibo Backups Using A Windows PC
- English: くり 研究所 - Switch controller with Win+Bluetooth capable of read Amiibo files
- Japanese: くり 研究所 - Windowsでjoyconを使う
This guide shows you how to use
joycontrol to emulate Amiibos. You only need a Bluetooth adapter, and to boot your PC temporarily into Linux! (or you can try to use a Linux VM in Windows, but it has more issues).
See the bottom for Troubleshooting steps!
Step 1: Boot Linux
Skip this if you are running Linux.
Go ahead and download an Ubuntu disc image Go here, https://mirror.us.leaseweb.net/ubuntu-cdimage/xubuntu/releases/20.04/release/. Download
You have two options now:
WSL is not an option. WSL2 is not an option. If you're asking, Docker will almost guaranteedly not help you either.
Boot from USB
DO NOT choose 'Install' when you boot Xubuntu! I am not responsible for you messing up your computer.
If you're making a bootable USB, make sure you right click on the ISO file and choose "Burn Image to Disc" (this will wipe your USB drive). You cannot just copy the ISO file onto a regular usb drive with other files.
There is a full guide here: How to make bootable Linux USB in Windows (use the xubuntu iso though!)
Boot in a Virtual Machine
- you can use VirtualBox or similar to boot Linux inside Windows
- you will need to forward your Bluetooth adapter to the VM. This video, at this timestamp, does a good job of describing what to do. https://youtu.be/zvVNwrseZhg?t=350. This guide used to have slightly different instructions. Go ahead and enable Bluetooth like the video says. If you have Bluetooth issues, see Troubleshooting at the bottom.
- make sure to allocate at least 3GB of RAM to avoid any freezing, or issues with running out of space during setup
- you can theoretically "install" Xubuntu so that you don't have to repeat the joycontrol setup steps, but the install takes a while and is unnecessary if you just want to get this up and going once or even a few times (you can just leave the VM run for a few days depending on what your'e doing).
Step 2: Install JoyControl
Run these commands in the VM. You'll want to run these in a Terminal. You can open the Terminal by clicking "Applications" in the top-left corner and then choosing "Terminal" under "Accessories".
Note, these commands will require Internet access, but most VM providers will have Internet wired up to the VM by default. Configuring this is out-of-scope for this guide.
(If you need to open this page in the VM to copy/paste, this link (to this page) is shorter: https://bit.ly/2z0m09k.)
sudo true # hopefully sudo is happy sudo apt-get update -qy sudo apt-get upgrade -qy sudo apt-get install -qy git python3-pip libglib2.0-dev libhidapi-hidraw0 libhidapi-libusb0 libdbus-1-dev sudo pip3 install hid aioconsole crc8 dbus-python mkdir -p ~/joycontrol git clone https://github.com/mart1nro/joycontrol ~/joycontrol
Step 3: Quick Linux Path Guide (for Amiibo Files)
You need to get the amiibo bin files into the VM. You're on your own for that.
If you put them in your "home" folder in Linux, that is
/home/xubuntu. It's also sometimes shortened to
~/Downloads would mean
If you drag and drop an amiibo bin named
foobar.bin into your home directory, the path would be
/home/xubuntu/foobar.bin for example (that you will use later). If you were to use a browser and, as an example, download a backup from your OneDrive account, it will end up in
~/Downloads, and so you could pass
joycontrol, as shown below.
Step 4: Use JoyControl!
- If you have problems, you can press
CTRL+cand it will kill the app. Also, you can tap the up arrow to pull up the last command and run it again.
- Only send buttons to the Switch via this app. Do not press buttons on real controllers!
- After the connection, press
<Enter>in the terminal to get the
The following shows someone starting
joycontrol, connecting, sending some button presses and then loading up the amiibo bin and activating the amiibo reading:
cd ~/joycontrol sudo python3 ./run_controller_cli.py PRO_CONTROLLER # connect the control # then after the messages and connection, press <ENTER> # now you can send commands: # you can send buttons (pressing enter after each line) home a b # get the amiibo payload ready: # (see above for what the path should be) amiibo /home/xubuntu/Downloads/backup-of-my-amiibo.bin # activate the final dialog to start the NFC/amiibo read a
Try a few times! Things seem to be a bit flakey, even in pretty ideal conditions...
Also, try another adapter. People seem to really struggle with the internal laptop adapters and report more luck when they try when they find lying around.
OSError: [Errno 97] Address family not supported by protocol
You can't use WSL (neither WSL1 nor WSL2). If you're still getting this error, please give lots of details about anything you might have done differently.
The virtual joycon disconnects when I leave the Grip screen
You might get an error like this:
ERROR - [Errno 104] Connection reset by peer [19:39:05] joycontrol.protocol connection_lost::121 ERROR - Connection lost.
- Do not touch the real joycons or controller! Remove the joycons entirely, if possible, from the system. Remove other pro controllers.
- Send all buttons from the
joycontrolapp, instead of pressing the real buttons. You should get the game all ready to read the amiibo, then do the steps to attach the controller. Then send the final buttons to get back to the game and activate the amiibo.
- If you've done these things and it still disconnects when you leave the Grip screen, then you might be having Bluetooth issues. If this is the case, check your BT forwarding to your VM setup. Try booting into Linux on a USB instead. Or try another Bluetooth adapter.
OSError: [Errno 98] Address already in use
Check two things:
It's likely that you have
joycontrolrunning already. Run
ps aux | grep joycontrol. Does it look like there are two sets running. Try to kill them, or reboot.
If you're sure that's not it, you can try this workaround, but it really shouldn't be necessary almost ever. (details)
sudo sed -i 's|^ExecStart=/usr/lib/bluetooth/bluetoothd.*$|ExecStart=/usr/lib/bluetooth/bluetoothd --noplugin=input|g' /lib/systemd/system/bluetooth.service sudo systemctl daemon-reload sudo systemctl restart bluetooth
If this still doesn't help, it's the other one...
These steps are not really recommended by me anymore. I think they tend to cause more problems than good.
Windows + VirtualBox Workaround
You may need to disable your BT adapter so VirutalBox can control it:
Go into Device Manager
- Find your Bluetooth adapter
- Right-click -> Disable
Go into Windows Services
- Disable THREE Bluetooth services:
- "Bluetooth Audio Gateway Service"
- "Bluetooth Support Service"
- Disable THREE Bluetooth services:
MANY USERS are reporting that they re-enabled the devices in Hardware Manager after the VM booted and THEN were able to complete the steps successfully.
Known Good Setups
- Raspberry Pi 4 with built-in Bluetooth + Raspbian
- Raspberry Pi 0 with built-in Bluetooth + Raspbian
(it's possible a few steps are slightly different on Raspbian)