The PlaydateSimulator program on linux displays a "Waiting for playdate disk . . ." pop-up when uploading a game to the PlayDate console through it. If you let this go it will eventually time out, but if you mount the disk through the KDE desktop it will continue correctly to upload the game, unmount the device, and reboot to playing your game. The udev rule appears to be in place correctly in /etc/udev/rules.d/50-playdate.rules (as I'd expect since operations other than mounting are working correctly).
I am on Debian 12, running KDE for my desktop.
My "uname -a" reads:
Linux piglet 6.1.0-12-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.52-1 (2023-09-07) x86_64 GNU/Linux
The console output for a failed upload reads:
16:16:45: SDK: /home/devel/PlaydateSDK-2.1.1
16:16:45: Release: 2.1.1
16:16:45: CMD: first.pdx
16:16:46: Device Connected: /dev/ttyACM0
16:16:46: Loading: first.pdx/
16:16:46: Loading: OK
echo off
target=h7d1
build=712beb42-2.1.1-release.161138-buildbot-231103
boot_build=712beb42-2.1.1-release.161138-buildbot
SDK=2.1.1
pdxversion=20100
serial#=PDU1-Y059904
cc=9.2.1 20191025 (release) [ARM/arm-9-branch revision 277599]
pcbver=0x13
time and date set
16:16:53: Game to install: first.pdx/
16:16:53: PDX name: first.pdx
16:16:54: Device Disconnected: /dev/ttyACM0
Copying game to the Playdate encountered an error.
The udev rule in /etc/udev/rules.d/50-playdate.rules reads:
KERNEL=="ttyACM[0-9]*",MODE="0666"
udevadm output for /dev/ttyACM0 reads:
P: /devices/pci0000:00/0000:00:14.0/usb1/1-12/1-12.1/1-12.1:1.0/tty/ttyACM0
M: ttyACM0
R: 0
U: tty
D: c 166:0
N: ttyACM0
L: 0
S: serial/by-id/usb-Panic_Inc_Playdate_PDU1-Y059904-if00
S: serial/by-path/pci-0000:00:14.0-usb-0:12.1:1.0
E: DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-12/1-12.1/1-12.1:1.0/tty/ttyACM0
E: DEVNAME=/dev/ttyACM0
E: MAJOR=166
E: MINOR=0
E: SUBSYSTEM=tty
E: USEC_INITIALIZED=2639717253
E: ID_BUS=usb
E: ID_MODEL=Playdate
E: ID_MODEL_ENC=Playdate
E: ID_MODEL_ID=5740
E: ID_SERIAL=Panic_Inc_Playdate_PDU1-Y059904
E: ID_SERIAL_SHORT=PDU1-Y059904
E: ID_VENDOR=Panic_Inc
E: ID_VENDOR_ENC=Panic\x20Inc
E: ID_VENDOR_ID=1331
E: ID_REVISION=0200
E: ID_TYPE=generic
E: ID_USB_MODEL=Playdate
E: ID_USB_MODEL_ENC=Playdate
E: ID_USB_MODEL_ID=5740
E: ID_USB_SERIAL=Panic_Inc_Playdate_PDU1-Y059904
E: ID_USB_SERIAL_SHORT=PDU1-Y059904
E: ID_USB_VENDOR=Panic_Inc
E: ID_USB_VENDOR_ENC=Panic\x20Inc
E: ID_USB_VENDOR_ID=1331
E: ID_USB_REVISION=0200
E: ID_USB_TYPE=generic
E: ID_USB_INTERFACES=:020201:0a0000:
E: ID_USB_INTERFACE_NUM=00
E: ID_USB_DRIVER=cdc_acm
E: ID_USB_CLASS_FROM_DATABASE=Communications
E: ID_USB_SUBCLASS_FROM_DATABASE=Abstract (modem)
E: ID_PATH=pci-0000:00:14.0-usb-0:12.1:1.0
E: ID_PATH_TAG=pci-0000_00_14_0-usb-0_12_1_1_0
E: ID_MM_CANDIDATE=1
E: DEVLINKS=/dev/serial/by-id/usb-Panic_Inc_Playdate_PDU1-Y059904-if00 /dev/serial/by-path/pci>
E: TAGS=:systemd:
E: CURRENT_TAGS=:systemd:
I don't consider this a high priority, since I have already found a work-around. But it's interesting.