Mirror 1.0 Linux [Pop OS] [Arch Linux]

The issue I'm having is not Linux distro specific, but I'm unable to use Mirror on Linux. I can use Mirror on Windows, but I wanted to use Mirror on Linux.

When using Pop OS (based on Ubuntu/Debian) or Arch Linux, I get an error when trying to run Mirror.
If I run in the terminal I get this error:

INFO: soundDevice: 2
INFO: Have: 44100 Hz
INFO: Serial thread entry
INFO: Try to connect
ERROR: Failed to find gamecontrollerdb.txt
INFO: MirrorApp: Connection Error: Connect your Playdate
INFO: MirrorApp: Connection Error: Problem connecting to Playdate
INFO: Try to connect
INFO: MirrorApp: Connection Error: Problem connecting to Playdate

It would then loop

INFO: Try to connect
INFO: MirrorApp: Connection Error: Problem connecting to Playdate

On the application itself, I get this error:

I've went out of the way to plug the Playdate type c cable in different USB ports, same issue.

If I type in 'hwinfo --short' in the terminal, it shows Panic Playdate in the unknown section so I wonder if its a serial permission issue or if the Linux distros I've tried aren't recognizing my Playdate for another reason. My playdate is recognized in diskmode too. I've made sure libserialport-dev was installed.

When I type in lsusb, it detects the Playdate as:

Bus 003 Device 009: ID 1331:5740 Panic Inc Playdate

If I type in sudo dmesg it shows Playdate as:

[   70.739250] usb 1-5: new full-speed USB device number 2 using xhci_hcd
[   71.154826] usb 1-5: New USB device found, idVendor=1331, idProduct=5740, bcdDevice= 2.00
[   71.154836] usb 1-5: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[   71.154840] usb 1-5: Product: Playdate
[   71.154843] usb 1-5: Manufacturer: Panic Inc
[   71.154846] usb 1-5: SerialNumber: [redacted, but on the terminal it shows the playdate serial number]
[   71.220813] cdc_acm 1-5:1.0: ttyACM0: USB ACM device
[   71.220857] usbcore: registered new interface driver cdc_acm
[   71.220860] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters

I made sure to add my user to dialout and I even changed the udev rules for ttyACM and ttyUSB to 666

I'm running out of ideas of why it wont work. How do I get Mirror to work on Linux?

Thanks for your time.

1 Like

I tried this under PopOS. Many of the steps can be removed.

This requires the Linux terminal do at your own risk.

Just install libserialport0, patchelf, and arduino. sudo apt install libserialport0 patchelf arduino

Run Arduino and it will bug you to be added to the dialout usergroup. Confirm and it will ask for your password. After that run:
sudo patchelf --add-needed /usr/lib/x86_64-linux-gnu/libserialport.so.0 /usr/lib/x86_64-linux-gnu/liblistSerialsj.so.1.4.0 in the terminal

In your Playdate Mirror directory, rename libserialport.so.0. to libserialport.so.0.bak and Mirror should work.

3 Likes

I'm having a similar issue on Manjaro, which is based on Arch. I added my user to the uucp group, but the apt solution above won't work on Arch and I'm not sure how to translate it to Arch's lib organization

Hrm, by just renaming libserialport.so.0 to libserialport.so.0.bak I was able to get the app to connect, but it only mirrors audio and won't mirror the screen or allow for controller inputs.

Any other ideas would be welcome!

Oh my. In an interesting turn, as long as I keep the erroneous "A new version is now available!" window open, screen / input mirroring works!

2 Likes