Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

feat: add usb msc support for nrf52840#5011

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Open
mikesmitty wants to merge1 commit intotinygo-org:dev
base:dev
Choose a base branch
Loading
frommikesmitty:ms/nrf-msc-support

Conversation

@mikesmitty
Copy link
Contributor

I don't have an nrf52840 on hand to test yet (should have one tomorrow), but I figured I'd push this up in case@aykevl or anyone else wanted to give it a whirl
#4844 (comment)

@aykevl
Copy link
Member

aykevl commentedAug 24, 2025
edited
Loading

I tried this, but sadly it doesn't work.
I haven't investigated why it doesn't work though.

mikesmitty reacted with thumbs up emoji

@mikesmitty
Copy link
ContributorAuthor

No worries, my nrf52840 just showed up so I'll investigate

@deadprogram
Copy link
Member

@mikesmitty any update on this? I would really like to have it for something... 😸

@mikesmitty
Copy link
ContributorAuthor

Oh yeah, this fell off my radar. I've got a debugger just about set up with an nrf52840 now so I can dig into this again

@mikesmitty
Copy link
ContributorAuthor

Ok, at least in my testing it looks like it's just a problem with m.buf being too small. My test device has a write block size of 4 bytes, which I didn't think would ever happen. The m.buf buffer is set, perhaps a bit naively, to use the write block size as a capacity, but it needs to be 64 bytes at a minimum to be able to store a full usb packet and it's panicking.#5017 also modifies these buffer sizes but in a more expansive way so this will likely end up just being a temporary patch. I just saw Ayke commented again on that one so I'll swap back to that one next

@mikesmittymikesmitty changed the base branch fromrelease todevSeptember 17, 2025 13:07
@deadprogram
Copy link
Member

Pinging Dr.@mikesmitty 😸

mikesmitty reacted with laugh emoji

@mikesmitty
Copy link
ContributorAuthor

mikesmitty commentedOct 23, 2025
edited
Loading

Sorry, been getting distracted a lot recently haha. I'll start working on this again this weekend

deadprogram and b0ch3nski reacted with heart emoji

@deadprogram
Copy link
Member

Thank you!

@ysoldak
Copy link
Contributor

I gave it a try today on XIAO BLE board.

"usb-storage" example compiles and flashes to the board.

Mac can see the device, but can't really use it. I've tried to "Erase" it with Disk Utility, that just hangs.

See screenshots.

Screenshot 2025-11-24 at 22 45 29Screenshot 2025-11-24 at 22 48 14Screenshot 2025-11-24 at 22 48 54

@ysoldak
Copy link
Contributor

ysoldak commentedNov 24, 2025
edited
Loading

Same happens withxiao-rp2040 target though, which as I understood is supposed to work, so either nrf version already works as expected OR we need a better example to try with OR need an instruction how to initialize the storage device.

@mikesmitty
Copy link
ContributorAuthor

Ok, finally getting back into this now. Let me see where I left off

deadprogram and ysoldak reacted with hooray emoji

@ysoldak
Copy link
Contributor

Just in case it helps in any way, here is UF2 bootloader for nRF52 chips.
Boards with UF2 bootloader show up as mass storage devices.

https://github.com/adafruit/Adafruit_nRF52_Bootloader/blob/master/src/usb/usb.c

@mikesmitty
Copy link
ContributorAuthor

Woof, that was an adventure. The usb endpoint handling logic for nrf52840 was unconditionally accepting packets and I ended up having to rework it a little bit in order to allow returning a NAK when needed, but it seems to be working for me now if you guys want to give it a shot

@deadprogram
Copy link
Member

@ysoldak please give this PR another try if you get a chance.

ysoldak reacted with thumbs up emoji

@ysoldak
Copy link
Contributor

Still can't see Mass Storage Device when flashing usb-storage example to XIAO BLE board.
tinygo flash -target=xiao-ble -opt=z ./src/examples/usb-storage

There is no popup with Eject, Ignore and Initialize... buttons anymore, but nothing else either.

Is there any other (better) way to test?

@mikesmitty
Copy link
ContributorAuthor

Sorry, I've been playing whackamole with bugs in this one a little bit. I started putting together a branch with tests to try and iron those out properly. I'll trim this back and put those in the other branch

@deadprogram
Copy link
Member

@mikesmitty#5109 has been merged, perhaps this PR can now be rebased and retested?

@mikesmitty
Copy link
ContributorAuthor

I rebased if you want to give it a go, but I haven't tested it yet. I spent a bunch of time arguing with both the jlink and the nrf52 board, but I've finally got a reliable workflow going again

@mikesmitty
Copy link
ContributorAuthor

Ok, nailed down the bug I was stuck on for the longest time where endpoint stalls were hanging indefinitely and the CSW was not being returned. In order to reset the DATA0/DATA1 insetEPDataPID like is done after an endpoint stall you have to actually write the register twice. Once with just the endpoint address, then again with the address combined the new DATA0/DATA1 value at the appropriate offsets. Getting a new hang now, but making progress

b0ch3nski reacted with heart emoji

@mikesmitty
Copy link
ContributorAuthor

mikesmitty commentedDec 9, 2025
edited
Loading

Alrighty, I fixed the last bug I was running into and pushed the changes up on#5110 since that's where I was doing my testing. I tried porting the change back over to this branch, but it's running into some fatal bug on this branch and I don't have time to sort it out this morning. I'll sort out/split up the changes a bit later, but for now you can try out the changes on that other PR

Edit: Oh, actually there's another new bug, but it enumerates properly now. I'll take a look into it a bit later

@deadprogram
Copy link
Member

Alrighty, I fixed the last bug I was running into and pushed the changes up on#5110 since that's where I was doing my testing. I tried porting the change back over to this branch, but it's running into some fatal bug on this branch and I don't have time to sort it out this morning. I'll sort out/split up the changes a bit later, but for now you can try out the changes on that other PR

Edit: Oh, actually there's another new bug, but it enumerates properly now. I'll take a look into it a bit later

Thanks for working on this@mikesmitty ❤️

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

Reviewers

No reviews

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

4 participants

@mikesmitty@aykevl@deadprogram@ysoldak

[8]ページ先頭

©2009-2025 Movatter.jp