You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
LilyGo T-Deck Pro USB mount not working on mac #184
Doesn’t seem to mount in Mac (sd card on its own mounts perfectly fine) not sure if this is intended to work for Mac but listing in case.
The ESP32 and the SD card Iare visible in disk utility esp32 is mounted but not the SD card even manually mounting in GUI via disk utility does not mount.
Also cannot get T-Deck pro to exit USB mode without reset of device. Tried tapping various screen locations and many keyboard buttons.
*Update as soon as I wrote this I figured out there is a hidden button in the upper left 😂
“Prev - Sel - Next” buttons are unresponsive.
Thank you all so much for you very hard work on this amazing project :)
hello, similar or same problem here in my linux and latest m5launcher on my t-deck pus (not the pro) i built on vscode and platformio. works fine, but usb mode wont work as the device wont show up on my laptop.
(i'm not good in guessing, but i jave to mention i added this platformio udev rules,.... hopefully they dont block the device from beeing recognized as storage (which i assume this function does)
@bmorcelli I have a mac and hit a dead end yesterday. diskutil shows the device but Finder does not display it. The same SD card works from an SD card reader so I suspect something in the handshake. I will try again soon and report back.
@benallfree Make sure you are using latest firmware. I made the PR that fixes this issue on mac when using other devices, and it should work here. I needed to turn off power on device before plugging in (which triggers specific "I am USB device" behavior.) I don't have a T-Deck Pro, so I can't test, but it definitely should work unless they do USB different.
It was mentioned on other issue, I tried to patch ot, but the guy never answered, something about it not being automatically mounted on Mac..
@bmorcelli by "the guy" you mean me? I have no T-Deck Pro to test, but it fixed it on mac on several other devices here (regular tdeck, catrdputeradv, etc.) The PR that fixes this should be merged in current. I can test more with the devices I have, if it will help, but no T-Deck Pro here.
@konsumer I have a TDeck Plus and was unable to get it working from anything in this repo. It doesn’t seem to respond at all when powered off/on but I’ll try again because it sure would be nice to get to the bottom of it.
@benallfree how exactly did you install? Here is what I would do:
go to webflasher and choose Beta/LilyGo/T-Deck Pro ("ePaper display") to flash
unplug USB
turn off power switch - maybe this is not needed for yours, but it was for my devices. They power on with USB, but it tells ESP32 "act like a USB device", and most full-USB-stack ESP32 devices work like this.
plug in USB
If it's still not showing as USB drive, share these logs:
/Launcher_error.log on SD
mac logs
# A. Does the device exist on the bus at all?
system_profiler SPUSBDataType | grep -A15 -i "Launcher\|303a"
ioreg -p IOUSB -l -w 0 | grep -i -A30 launcher
# B. Live kernel log while plugging in (device present but not mounting)
log stream --predicate 'eventMessage CONTAINS "USBMSC"' --style compact
sudo log stream --predicate 'subsystem == "com.apple.iokit.IOUSBMassStorageDriver"' --style compact
# C. After the attempt (retrospective)
log show --last 10m --predicate 'eventMessage CONTAINS "USBMSC"' --style compact
sudo log show --last 10m --predicate 'process == "diskarbitrationd"' --style compact
# D. Is it a disk, and does bulk I/O actually work?
diskutil list
diskutil verifyVolume /dev/diskN # issue #424: this passed while mount still failed
diskutil activity # live disk-event stream
I will say, it's not that huge a deal if it doesn't work, in my opinion. Like you can use the SD in a regular SD reader, and you can use Launcher (with OTA, etc) on the device. This is basically just about making the device act like a USB drive in Launcher, which can be accomplished other ways (like custom firmware that does just this.) I think it's good to try to get it working in Launcher, but it's not essential to using it, and without access to the device and a mac, there is no real way to work on it. I have a mac, but no device, and I think @bmorcelli has the device, but no mac. We're not paid by M5/Lilygo or anything, like we just work on this for free.
I think next steps, if we really can't get it working, is a proof-of-concept standalone firmware (that you can troubleshoot) that does what we need here (mount SD, act like USB drive to host) since proving that works will help us make sure Launcher does the same thing (I think it does, like I think this might just be a quirk of this device.) It's not guaranteed that Lilygo did USB right, or anything else, so if it's not working the same, that could just be the simple answer.
I made a tester that just implements the USB/SD part. I don't have time right now to test on my own hardware, but try it out. You can get ready-made firmware images in releases.
@konsumer Did you say there is firmware that does it already? That might be interesting, that would basically be like the "USB" feature of Launcher but installed separately?
Another topic, somewhat related - I'd love to find a way to get Launcher in my local development workflow, like flashing updated PlatformIO builds to an existing app partition. That is my actual use case that led to noticing the USB drive wasn't mounting properly.
Yeh, there is probly something existing, but I also made one (above) that works with my cardputerADV (and should work with your T-Deck Pro) on mac, and only does that. This is the SD, in my cardputer, which is pretending to be a USB drive:
Again, this just uses the same code as Launcher, so if it works, Launcher should work too.
UPDATE: It's not 100% the same, in demo I set speed to 20M, which seemed to fix things, so I made a PR to do that in Launcher too.
Another topic, somewhat related - I'd love to find a way to get Launcher in my local development workflow, like flashing updated PlatformIO builds to an existing app partition. That is my actual use case that led to noticing the USB drive wasn't mounting properly.
Yes, I originally wanted similar. Honestly, what I do now is pio normally, and just flash direct to try stuff out, then when it's all ready to go, I reflash Launcher. It's a bit annoying to swap them, but they sort of inhabit different usecase-spaces.
I worked out this whole complicated build/copy to SD setup in my platformio.ini, but there isn't a direct way to say "ok, now load and run this" and also you get into weird overlap when you need to swap between "pretend to be a USB thumbdrive" and "go into boot debug mode so I can upload code", not to mention whatever the firmware does (like I do radio stuff and emulate other USB things) and it gets messy. At first I was a bit annoyed to keep having to reflash Launcher when I was done developing, but it's not too bad (you can even script it, and upload fairly quickly with the bin, directly.)
I think what made me more comfortable with this workflow is just realizing all the tooling is made to work like this, and Launcher is not really for that (it's just a great way to swap out lots of finalized firmwares.) The time I spent fighting my tools would have been better spent writing code!
#439 seems to fix current code on cardputer/mac (SPI was too slow to work correctly) so that might also be related. I still don't recommend using USB to juggle firmwares, though (just use pio the normal way, and reflash Launcher when you're done.) It's way easier to automate (reset-to-debug, flash, reset just using normal pio stuff) and no messy stuff with USB or anything else.
@benallfree the above PR helps with dev on firmwares. It makes it so you can push into Launcher, automatically (instead of replacing firmware) using a script. Basically put tools/pio_launcher_upload.py in your project and add this to platformio:
Activity
google906 commentedon Jan 18, 2026
hello, similar or same problem here in my linux and latest m5launcher on my t-deck pus (not the pro) i built on vscode and platformio. works fine, but usb mode wont work as the device wont show up on my laptop.
(i'm not good in guessing, but i jave to mention i added this platformio udev rules,.... hopefully they dont block the device from beeing recognized as storage (which i assume this function does)
thanks for your work.
bmorcelli commentedon Mar 27, 2026
will be available for testing on Beta in about 20 minutes
konsumer commentedon Mar 27, 2026
Make sure power switch is off, and it will show up as
M5drive on mac. (tested on M4-silicone, running Tahoe.)benallfree commentedon Sep 30, 2026
@bmorcelli this one is still happening for me on the tdeck plus, have you heard any new info? running latest beta
bmorcelli commentedon Sep 30, 2026
@benallfree hey brother, I haven't heard about it..
It was mentioned on other issue, I tried to patch ot, but the guy never answered, something about it not being automatically mounted on Mac..
I don't have any Mac device to test and debug, so I meed someone to fix it for me
benallfree commentedon Sep 30, 2026
@bmorcelli I have a mac and hit a dead end yesterday.
diskutilshows the device but Finder does not display it. The same SD card works from an SD card reader so I suspect something in the handshake. I will try again soon and report back.konsumer commentedon Sep 30, 2026
@benallfree Make sure you are using latest firmware. I made the PR that fixes this issue on mac when using other devices, and it should work here. I needed to turn off power on device before plugging in (which triggers specific "I am USB device" behavior.) I don't have a T-Deck Pro, so I can't test, but it definitely should work unless they do USB different.
@bmorcelli by "the guy" you mean me? I have no T-Deck Pro to test, but it fixed it on mac on several other devices here (regular tdeck, catrdputeradv, etc.) The PR that fixes this should be merged in current. I can test more with the devices I have, if it will help, but no T-Deck Pro here.
benallfree commentedon Oct 1, 2026
@konsumer I have a TDeck Plus and was unable to get it working from anything in this repo. It doesn’t seem to respond at all when powered off/on but I’ll try again because it sure would be nice to get to the bottom of it.
konsumer commentedon Oct 1, 2026
@benallfree how exactly did you install? Here is what I would do:
If it's still not showing as USB drive, share these logs:
/Launcher_error.logon SDI will say, it's not that huge a deal if it doesn't work, in my opinion. Like you can use the SD in a regular SD reader, and you can use Launcher (with OTA, etc) on the device. This is basically just about making the device act like a USB drive in Launcher, which can be accomplished other ways (like custom firmware that does just this.) I think it's good to try to get it working in Launcher, but it's not essential to using it, and without access to the device and a mac, there is no real way to work on it. I have a mac, but no device, and I think @bmorcelli has the device, but no mac. We're not paid by M5/Lilygo or anything, like we just work on this for free.
I think next steps, if we really can't get it working, is a proof-of-concept standalone firmware (that you can troubleshoot) that does what we need here (mount SD, act like USB drive to host) since proving that works will help us make sure Launcher does the same thing (I think it does, like I think this might just be a quirk of this device.) It's not guaranteed that Lilygo did USB right, or anything else, so if it's not working the same, that could just be the simple answer.
konsumer commentedon Oct 1, 2026
I made a tester that just implements the USB/SD part. I don't have time right now to test on my own hardware, but try it out. You can get ready-made firmware images in releases.
benallfree commentedon Oct 1, 2026
@konsumer Did you say there is firmware that does it already? That might be interesting, that would basically be like the "USB" feature of Launcher but installed separately?
Another topic, somewhat related - I'd love to find a way to get Launcher in my local development workflow, like flashing updated PlatformIO builds to an existing app partition. That is my actual use case that led to noticing the USB drive wasn't mounting properly.
konsumer commentedon Oct 1, 2026
Yeh, there is probly something existing, but I also made one (above) that works with my cardputerADV (and should work with your T-Deck Pro) on mac, and only does that. This is the SD, in my cardputer, which is pretending to be a USB drive:
Again, this just uses the same code as Launcher, so if it works, Launcher should work too.
UPDATE: It's not 100% the same, in demo I set speed to 20M, which seemed to fix things, so I made a PR to do that in Launcher too.
Yes, I originally wanted similar. Honestly, what I do now is pio normally, and just flash direct to try stuff out, then when it's all ready to go, I reflash Launcher. It's a bit annoying to swap them, but they sort of inhabit different usecase-spaces.
I worked out this whole complicated build/copy to SD setup in my
platformio.ini, but there isn't a direct way to say "ok, now load and run this" and also you get into weird overlap when you need to swap between "pretend to be a USB thumbdrive" and "go into boot debug mode so I can upload code", not to mention whatever the firmware does (like I do radio stuff and emulate other USB things) and it gets messy. At first I was a bit annoyed to keep having to reflash Launcher when I was done developing, but it's not too bad (you can even script it, and upload fairly quickly with the bin, directly.)I think what made me more comfortable with this workflow is just realizing all the tooling is made to work like this, and Launcher is not really for that (it's just a great way to swap out lots of finalized firmwares.) The time I spent fighting my tools would have been better spent writing code!
konsumer commentedon Oct 1, 2026
#439 seems to fix current code on cardputer/mac (SPI was too slow to work correctly) so that might also be related. I still don't recommend using USB to juggle firmwares, though (just use pio the normal way, and reflash Launcher when you're done.) It's way easier to automate (reset-to-debug, flash, reset just using normal pio stuff) and no messy stuff with USB or anything else.
bmorcelli commentedon Oct 1, 2026
@benallfree Available for testing on Beta
@leebobleebob
konsumer commentedon Oct 1, 2026
@benallfree the above PR helps with dev on firmwares. It makes it so you can push into Launcher, automatically (instead of replacing firmware) using a script. Basically put
tools/pio_launcher_upload.pyin your project and add this to platformio:extra_scripts = post:./tools/pio_launcher_upload.pyThen when you do
pio run -t uploadit will automatically push it into Launcher, instead.