RfidResearchGroup / ChameleonUltra

The new generation chameleon based on NRF52840 makes the performance of card emulation more stable. And gave the chameleon the ability to read, write, and decrypt cards.
https://chameleonultra.com
GNU General Public License v3.0
939 stars 155 forks source link

Lf read From merlokk #216

Open xianglin1998 opened 5 months ago

xianglin1998 commented 5 months ago

Strengthen low-frequency related functions

github-actions[bot] commented 5 months ago

You are welcome to add an entry to the CHANGELOG.md as well

augustozanellato commented 5 months ago

A notice should probably be added stating that this code is at least partly based on the Flipper lfrfid library

shayya commented 5 months ago

can we start working on HID26 protocol emulation. It's by far the most common LF protocol. I'm not as familiar with the chameleon ultra codebase. If you tell me what are the files that are need I'd be happy to contribute

xianglin1998 commented 4 months ago

A notice should probably be added stating that this code is at least partly based on the Flipper lfrfid library

I will confirm some copyright related issues with the author, which is indeed very important.

xianglin1998 commented 4 months ago

can we start working on HID26 protocol emulation. It's by far the most common LF protocol. I'm not as familiar with the chameleon ultra codebase. If you tell me what are the files that are need I'd be happy to contribute

Within the "firmware/application/src/rfid", you can see the 'nfctag' and 'reader' dir, if you are want to implement a tag, you can view the nfctag dir's file.

github-actions[bot] commented 3 months ago

Built artifacts for commit 8dab9245616f7d61399721368215768e9453615b

Firmware

Client

merlokk commented 3 months ago

A notice should probably be added stating that this code is at least partly based on the Flipper lfrfid library

I will confirm some copyright related issues with the author, which is indeed very important.

yes, it GPL3. license will be added later.

yarreg commented 1 month ago

What is the status of this PR? We are waiting for a new code base to support more LF protocols. Thanks.

merlokk commented 1 month ago

im working on it. i think in several weeks I will publish it

yarreg commented 1 month ago

im working on it. i think in several weeks I will publish it

Thanks for your work!

Xample commented 3 weeks ago

Hello, here is my feedback: I recently purchased a Chameleon Ultra which one I immediately updated with the latest FW but reading the LF never worked. I first thought the Chameleon to be faulty and therefore purchased another one supposed to be genuine. On delivery, it was loaded with the FW 1.0, I tried loading a LF card and the new Chameleon was able to detect it. I then tried to upgrade it to the v2.0.0 but then my Chameleon is not reading LF anymore. I saw many users experienced the same issue (which is the reason why I'm here). I therefore tried your firmware (based on the artefact) on at least one device but, it is still not reading any card. I therefore rebased your branch on master and rebuilt the firmware. Something like

git clone https://github.com/merlokk/ChameleonUltra.git
cd ChameleonUltra
git remote add upstream https://github.com/RfidResearchGroup/ChameleonUltra.git
git fetch upstream
git checkout lf_read
git rebase upstream/main
docker run --rm --platform=linux/amd64 -v "$(pwd)":/workdir -w /workdir ghcr.io/rfidresearchgroup/chameleonultra-fw-builder:pr-233 bash -c "./firmware/build.sh"

For the curious, the builds will be in ChameleonUltra/firmware/objects/bootloader I then updated my 2 Chameleons (using MTools BLE using my iPhone), but I'm still unable to read any lf card.

I therefore think about downgrading the FW to 1.0 to start testing my Chameleons with a firmware from scratch. But having no XXXLink (based on the only artefact available for 1.0) I just don't know how to load or pack this ultra.hex to load it into my chameleon. I will open a ticket to ask for help.

To summarize: My issue has not been fixed (yet?) by this branch's code. I will continue digging on my side to see if my device is "corrupted" and if so, why.

whywilson commented 2 weeks ago

Hello, here is my feedback: I recently purchased a Chameleon Ultra which one I immediately updated with the latest FW but reading the LF never worked. I first thought the Chameleon to be faulty and therefore purchased another one supposed to be genuine. On delivery, it was loaded with the FW 1.0, I tried loading a LF card and the new Chameleon was able to detect it. I then tried to upgrade it to the v2.0.0 but then my Chameleon is not reading LF anymore. I saw many users experienced the same issue (which is the reason why I'm here). I therefore tried your firmware (based on the artefact) on at least one device but, it is still not reading any card. I therefore rebased your branch on master and rebuilt the firmware. Something like

git clone https://github.com/merlokk/ChameleonUltra.git
cd ChameleonUltra
git remote add upstream https://github.com/RfidResearchGroup/ChameleonUltra.git
git fetch upstream
git checkout lf_read
git rebase upstream/main
docker run --rm --platform=linux/amd64 -v "$(pwd)":/workdir -w /workdir ghcr.io/rfidresearchgroup/chameleonultra-fw-builder:pr-233 bash -c "./firmware/build.sh"

For the curious, the builds will be in ChameleonUltra/firmware/objects/bootloader I then updated my 2 Chameleons (using MTools BLE using my iPhone), but I'm still unable to read any lf card.

I therefore think about downgrading the FW to 1.0 to start testing my Chameleons with a firmware from scratch. But having no XXXLink (based on the only artefact available for 1.0) I just don't know how to load or pack this ultra.hex to load it into my chameleon. I will open a ticket to ask for help.

To summarize: My issue has not been fixed (yet?) by this branch's code. I will continue digging on my side to see if my device is "corrupted" and if so, why.

If you have the issues below, it can be the antenna issues. FW 1.0 return all 00 when run lf read no matter if there is a EM4100 tag there or not. FW 2.0 doesn't return anyting.