Arduino LMIC 6.0.1
Arduino LoRaWAN(r) MAC in C
Loading...
Searching...
No Matches
Release History

v6.0.1

  • Fix loop overflow in SX126x writeBuffer (#1041). Thanks to @Maddocrus for reporting (#1013).
  • Fix buffer read overrun in SX126x radio driver (#1040).
  • Replace defunct forum.mcci.io links with GitHub Discussions (#1035).
  • Install latest Doxygen 1.x in CI instead of distro package (#1033).
  • Fix Doxygen rendering of RadioDriver.md (#1029).

v6.0.0

  • Add Class C continuous reception support (LMIC_ENABLE_class_c). See doc/CLASS-C.md for usage. (#323, #1019)
  • Add secure element abstraction for key storage and crypto operations (src/se/). (#578)
  • Add SX1261/SX1262 radio driver support. (#949)
  • Add Doxygen support (Doxyfile).
  • Breaking change: LMIC.rxtime renamed to LMIC.nextRxTime.

v5.0.1

  • Work around different behavior for int32_t wrap in newer GCC versions. (#968, v5.0.1-pre1)

v5.0.0

  • Enable device time request by default in config file (#840).
  • Add support for SX1261/SX1262 radios (#949).
  • Refactor README.md a little and put little used configuration info in a separate file.
  • Change all exports named hal_* to lmic_hal_*. This is a breaking change, and so the version number is advanced to 5.0.0. (#714)
  • Fix typos in documentation (#956, #879).
  • Initialize DHT sensor in ttn-abp-feather-us915-dht22 example (#902)
  • Fix configPower for sx1272 (#894)
  • Enable device time by request (#840)
  • Correct bug in MAC Rx1DrOffset error checking for regions other than US (#841). Thanks to @GitTibbe for finding this.
  • Refactor the LMIC to enable secure element support (#578).
  • Add Class C support (#323).
  • Start resurrecting Doxygen support.

v4.1.1

  • Fix US-like regions when network server disables all channels before setting others up (#819).
  • Fix US-like regions when network server disables all banks before setting others up (#820).
  • Documentation improvements in README and in code commentary.

v4.1.0

  • Adapt ttn-otaa-network-time example to be compatible with PaulStoffregen/Time v1.6.1, which deletes Time.h in favor of TimeLib.h #763. Version is v4.0.1-pre1.
  • Add support for TTGO LoRa32-OLED v2.1.6. (Thanks to @ChrSchultz, #692.)
  • Correct max TX EIRP for Japan to 13 dBm. (Thanks to @ryos36, #662.)
  • Correct link in this document to the LMIC-v4.0.0 pdf (#788, thanks @lnlp).
  • Warn about Feather pin wiring requirements (#755, thanks to @d-a-v).
  • Fix typos in this document (#780, thanks @PeeJay).
  • Fix additional warnings on non-ARM platforms (#791, thanks @d-a-v).
  • Allow application to set the value to be used in DeviceStatusAns MAC messages (#576 and #560, thanks to @altishchenko).
  • Minor adjustments to the compliance sketch (#800).
  • Update the LMIC reference manual to LMIC-v4.1.0.pdf.

v4.0.0

Major release; changes are significant enough to be "likely breaking".

  • Fix some broken documentation references #644, #646, #673.
  • Re-added CI testing, since Travis CI no longer works for us #647; fixed AVR compliance CI compile #679.
  • Don't use defined() in macro definitions #606
  • Fix a warning on AVR32 #709.
  • Fix Helium link in examples #715, #718.
  • Remove XCHANNEL support from US region #404
  • Assign channels randomly without replacement #515, #619, #730.
  • Don't allow LMIC_setupChannel() to change default channels #722. Add LMIC_queryNumDefaultChannels() #700.
  • Don't accept out-of-range DRs from MAC downlink messages #723
  • Adopt semantic versions completely #726.
  • Implement JoinAccept CFList processing for US/AU #739.
  • Correct JoinAccept CFList processing for AS923 #740.
  • Don't compile board config objects when we know for sure they'll not be used; compilers can't always tell #736.

v3.3.0

v3.2.0

  • #550 fixes debug prints in ttn-otaa.ino.
  • #553 add full regional support to raw.ino and ttn-abp.ino.
  • #570 corrects handling of piggy-back MAC responses when sending an LMIC_sendAlive() (OPMODE_POLL) message.
  • #524 corrects handling of interrupt disable, and slightly refactors the low-level interrupt handling wrappers for clarity. With this change, radio_irq_handler_v2() is never called except from the run loop, and so the radio driver need not (and does not) disable interrupts. Version is v3.1.0.20.
  • #568 improves documentation for the radio driver.
  • #537 fixes a compile error in SX1272 support. (Thanks @ricaun.) Version is v3.1.0.10.

v3.1.0

Officially adopts the changes from v3.0.99. There were dozens of changes; check the GitHub issue logs and change logs. This was a breaking release (due to changes in data layout in the LMIC structure; the structure is accessed by apps).

v3.0.99

Pre-release for v3.1.0. Note that the behavior of the LMIC changes in important ways, as it now enforces the LoRaWAN mandated maximum frame size for a given data rate. For Class A devices, this may cause your device to go silent after join, if you're not able to handle the frame size dictated by the parameters downloaded to the device by the network during join.

  • #470 corrects the name of AU915 region. #516 makes sure that LMIC_REGION_au921 is defined (but deprecated) for backward compatibility.
  • #452 fixes a bug #450 in LMIC_clrTxData() that would cause join hiccups if called while (1) a join was in progress and (2) a regular data packet was waiting to be uplinked after the join completes. Also fixes AS923- and AU915-specific bugs #446, #447, #448. Version is v3.0.99.5.
  • #443 addresses a number of problems found in cooperation with RedwoodComm. They suggested a timing improvement to speed testing; this lead to the discovery of a number of problems. Some were in the compliance framework, but one corrects timing for very high spreading factors, several (#442, #436, #435, #434 fix glaring problems in FSK support; #249 greatly enhances stability by making API calls much less likely to crash the LMIC if it's active. Version is v3.0.99.3.
  • #388, #389, #390 change the LMIC to honor the maximum frame size for a given DR in the current region. This proves to be a breaking change for many applications, especially in the US, because DR0 in the US supports only an 11-byte payload, and many apps were ignoring this. Additional error codes were defined so that apps can detect and recover from this situation, but they must detect; otherwise they run the risk of being blocked from the network by the LMIC. Because of this change, the next version of the LMIC will be V3.1 or higher, and the LMIC version for development is bumped to 3.0.99.0.
  • #401 adds 865 MHz through 868 MHz to the "1%" band for EU.
  • #395 corrects pin-mode initialization if using lmic_hal_interrupt_init().
  • #385 corrects an error handling data rate selection for TxParamSetupReq, found in US-915 certification testing. (v2.3.2.71)
  • #378 completely reworks MAC downlink handling. Resulting code passes the LoRaWAN V1.5 EU certification test. (v2.3.2.70)
  • #360 adds support for the KR-920 regional plan.

v2.3.2

  • #204 eliminates a warning if using a custom pin-map.
  • #206 updates CI testing to Arduino IDE v1.8.8.

v2.3.1

Adds <arduino_lmic_user_configuration.h>, which loads the pre-processor LMIC configuration variables into scope (issue #199).

v2.3.0

  1. The pin-map is extended with an additional field pConfig, pointing to a C++ class instance. This instance, if provided, has extra methods for dealing with TCXO control and other fine details of operating the radio. It also gives a natural way for us to extend the behavior of the HAL.
  2. Pinmaps can be pre-configured into the library, so that users don't have to do this in every sketch.

Accompanying this was a fairly large refactoring of inner header files. We now have top-level header file <arduino_lmic_hal_configuration.h>, which provides much the same info as the original <hal/hal.h>, without bringing most of the LMIC internal definitions into scope. We also changed the SPI API based on a suggestion from @manuelbl, making the HAL more friendly to structured BSPs (and also making the SPI API potentially faster).

Interim bug fixes (pre-v2.3.0)

Added a new API (radio_irq_handler_v2()), which allows the caller to provide the timestamp of the interrupt. This allows for more accurate timing, because the knowledge of interrupt overhead can be moved to a platform-specific layer (#148). Fixed compile issues on ESP32 (#140 and #153). We added ESP32 and 32u4 as targets in CI testing. We switched CI testing to Arduino IDE 1.8.7. Fixed issue #161 selecting the Japan version of as923 using CFG_as923jp (selecting via CFG_as923 and LMIC_COUNTRY_CODE=LMIC_COUNTRY_CODE_JP worked). Fixed #38 – now any call to lmic_hal_init() will put the NSS line in the idle (high/inactive) state. As a side effect, RXTX is initialized, and RESET code changed to set value before transitioning state. Likely no net effect, but certainly more correct.

V2.2.2

Adds ttn-abp-feather-us915-dht22.ino example, and fixes some documentation typos. It also fixes encoding of the Margin field of the DevStatusAns MAC message (#130). This makes Arduino LMIC work with networks implemented with LoraServer.

V2.2.1

Corrects the value of ARDUINO_LMIC_VERSION (#123), allows ttn-otaa-feather-us915 example to compile for the Feather 32u4 LoRa (#116), and addresses documentation issues (#122, #120).

V2.2.0

Adds encoding functions and tn-otaa-feather-us915-dht22.ino example. Plus a large number of issues: #59, #60, #63, #64 (listen-before-talk for Japan), #65, #68, #75, #78, #80, #91, #98, #101. Added full Travis CI testing, switched to travis-ci.com as the CI service. Prepared to publish library in the official Arduino library list.

V2.1.5

Fixes issue #56 (a documentation bug). Documentation was quickly reviewed and other issues were corrected. The OTAA examples were also updated slightly.

V2.1.4

Fixes issues #47 and #50 in the radio driver for the SX1276 (both related to handling of output power control bits).

V2.1.3

Fix for issue #43: handling of LinkAdrRequest was incorrect for US915 and AU915; when TTN added ADR support on US and AU, the deficiency was revealed (and caused an ASSERT).

V2.1.2

Fix for issue #39 (adding a prototype for LMIC_DEBUG_PRINTF if needed). Fully upward compatible, so just a patch.

V2.1.1

Same content as V2.1.2, but was accidentally released without updating library.properties.

V2.1.0

Adds support for the Murata LoRaWAN module.

V2.0.2

Adds support for additional regions.