-
Notifications
You must be signed in to change notification settings - Fork 116
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 our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RFCat application for Flipper Zero #155
Comments
hey @caquino , let me know if i can help you here. @ |
Thanks, I appreciate the offer! I started looking at the source code yesterday and getting my development setup configured. If it is not a problem with you, I think it would be better to keep the conversation here. This way, it can be useful for others going through a similar journey. |
@atlas0fd00m, in your opinion, what would be the correct way to go about it? Should we make the flipper emulate one of the existing dongles (YS1, IMME, ...) or make it a new dongle? |
that makes sense to keep the conversation here. i'm not entirely sure which way is better. it depends on how the FlipperZero handles the USB port. i notice that it allows the USB to be used by different tools.... if you are able to get that granular control, it may make sense to make the Flipper show up similar to a DonsDongle, ChronosDongle, or YS1. the comms wouldn't change significantly, but we'll make use of the if you can't get granular control over the USB port, you can still implement RfCat comms, but over straight serial. it won't be a 1:1 with RfCat comms, but we can still do it. i'm excited for you! this sounds like a lot of fun. :) @ |
Thanks for such detailed answer, I really appreciate your time. You can take control over the USB port and provide custom endpoints and such like for example this mass storage code I can't say that I'm also an expert on Flipper development as this is the first idea I had for an app, but I imagine the flow will be something like the following: graph LR;
USB --> Application;
Application --> CC11011;
This is a similar behavior that the GPIO app has, you can use the flipper as a serial adapter by connecting the RX/TX to gpio pins and exposing a serial adapter endpoint via USB. code I can see some references for DMA access and rx/tx threads on the USB uart bridge app, so I imagine the same can be created for a custom endpoint implementation, but at this stage it is just a guess. So, I have some concerns about timing and latency that it may introduce, but I'm reading the documentation to see if there is any way that we can try to overcome processing with DMAs and other similar techniques. So, I have one more question: Is the timing between the USB and the CC11011 critical? |
np! i can't guarantee quick responses (or that i don't need to be poked again), but that's not because i don't try. :) and i'm certainly invested and care deeply about RfCat and the community it serves. timing is always "a concern" but i'm guessing it's less of a concern than you are probably thinking. there are certainly inefficiencies, and the world goes on. heck, RfCat client (python) hammers EP5 as fast as possible most the time, because USB is completely host-driven (ie. there's no way for the device to say "hey i got something for you!" - at least FS USB like RfCat uses). it sounds like you may be able to morph the existing USB firmware descriptors and handlers into the FlipperZero! that's pretty cool. that will make the FZ act just like a DonsDongle (or YS1 if you prefer) in many ways, and without having to write the annoying USB DESCRIPTORS all from scratch, or use the VCOM-style stuff they have. alternately, you can just take a different approach altogether, using the VCOM method used by other apps (makes /dev/ttyACM0 show up on Linux when you plug in the FZ), and rework the EP5 handlers to work using the straight "serial port" paradigm. up to you. i'll support you best as i can and share my thoughts whichever you choose. i think the other method might be quicker to success? but possibly not, since my brain can't remove the knowledge i gained about USB controller code implementation i gained through this process. Python code will need a few adjustments (an FZ-compatible version will be created, and the correct one selected at initialization. talk to me more about your concerns. i can't completely discern what you mean from the sentence "I have some concerns... that it may introduce" (not certain what "it" is referring to) keep in mind the scale of things. MAX Baud Rate for the cc1101 is 500kbaud. that's fast for human eyes, but compared to a FZ processor, not insurmountable. do things efficiently, do them well, fix it if it's not good enough, improve it if you think of ways after something is working. for me, the initial major milestone was getting PING working. for you, it should probably be the same. get something that shows up and responds to CMD_PING appropriately. from there, achieve the goal of reading/writing RF config entries. from there, receive. then transmit (or vice versa). but start out with a bite-sized, achievable goal. the rest will flow from there :) @ |
would love to see this be a thing for flipper zero/cc1101 |
Hi,
I'm exploring the possibility of creating a Flipper Zero app that allows RFCat to use a Flipper as it would work with a Yardstick one or any other compatible device.
Is this something that interests the maintainers of RFCat in participating?
I assume it would either require the full implementation of the protocol, or to package the firmware available in the repo as a Flipper Zero application.
I've reached out to the developers of one of the firmware that can be used on the Flipper Zero to gauge the possibility of such feature and you can see more information over here: Next-Flip/Momentum-Firmware#26
The text was updated successfully, but these errors were encountered: