Skip to content

LilyGo T-Deck Pro USB mount not working on mac #184

Closed

Description

@leebobleebob

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 :)

Activity

  1. google906 commented on Jan 18, 2026

    @google906

    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.

  2. bmorcelli commented on Mar 27, 2026

    @bmorcelli
    Owner

    will be available for testing on Beta in about 20 minutes

  3. konsumer commented on Mar 27, 2026

    @konsumer
    Contributor

    Make sure power switch is off, and it will show up as M5 drive on mac. (tested on M4-silicone, running Tahoe.)

  4. benallfree commented on Sep 30, 2026

    @benallfree

    @bmorcelli this one is still happening for me on the tdeck plus, have you heard any new info? running latest beta

  5. bmorcelli commented on Sep 30, 2026

    @bmorcelli
    Owner

    @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

  6. benallfree commented on Sep 30, 2026

    @benallfree

    @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.

  7. konsumer commented on Sep 30, 2026

    @konsumer
    Contributor

    @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.

  8. benallfree commented on Oct 1, 2026

    @benallfree

    @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.

  9. konsumer commented on Oct 1, 2026

    @konsumer
    Contributor

    @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.

  10. konsumer commented on Oct 1, 2026

    @konsumer
    Contributor

    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.

  11. benallfree commented on Oct 1, 2026

    @benallfree

    @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.

  12. konsumer commented on Oct 1, 2026

    @konsumer
    Contributor

    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:

    Image

    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!

  13. konsumer commented on Oct 1, 2026

    @konsumer
    Contributor

    #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.

  14. bmorcelli commented on Oct 1, 2026

    @bmorcelli
    Owner

    @benallfree Available for testing on Beta

    @leebobleebob

  15. konsumer commented on Oct 1, 2026

    @konsumer
    Contributor

    @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:

    extra_scripts = post:./tools/pio_launcher_upload.py

    Then when you do pio run -t upload it will automatically push it into Launcher, instead.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions