-
Notifications
You must be signed in to change notification settings - Fork 210
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
LMIC asserts after too long trying to join #1
Comments
The problem appears to be that the lmic code increments LMIC.txCnt, and doesn't clear it until there's a success. This is OK, except for the following line in the US915 code: s1_t dr = DR_SF7 - ++LMIC.txCnt;
if( dr < DR_SF10 ) {
dr = DR_SF10;
failed = 1; // All DR exhausted - signal failed
} Since The solution appears to be to duplicate some of the logic
And also reset LMIC.txCnt to zero. |
According to LoRaWAN Regional Specs for US915 (page 12, section 2.2.2, line 28):
The LMIC code doesn't do this. It drops power from SF7/125 (DR4) to SF10/125 (DR0) on each channel change, then declares a failure after getting to DR0 without a successful join. The "Join failed" indication is an artifact of this code; there's no requirement in the spec to report a join failure to the application. So in fact, we should change the code to always use |
Busy pin initialisation and T-Beam S3 Core/Supreme pinmap
If you run the lmic code for long enough while configured for US915 without being able to join, it will assert:
FAILURE {somepath}/src/lmic/radio.c:452
Analysis of the code shows that it's failing because radio.c thinks it's been asked to transmit on FSK, and things are not set up for FSK (since there's no FSK here).
The join code continually lowers the data rate on every join failure.
I speculate that
lowerDR()
(fromlorabase.h
) is getting fooled by the data-rate lowering code into choosing an invalid/untested path, due to something from the conditional compiles.The text was updated successfully, but these errors were encountered: