Categories
IoT Zephyr

Zephyr Weekly Update – Scan away with me

I hope everyone had a great week! After a pretty massive heat wave in Southern Europe this week, it’s time to put together this week’s recap of Zephyr news. Not an awful lot, but some pretty cool topics nevertheless! As always please feel free to yell at me if you feel I forgot something important!

Zephyr docs get a major speed boost!

Recent tweaks in the configuration of the Zephyr documentation server are making it up to 5x faster.

This should make for a huge boost in your overall user experience when browsing the documentation, especially if your Internet connection speed is a bit average. Please let me know in the comments if it’s making an improvement for you, and feel free to share other feedback regarding the documentation in general!

Enhanced Wi-Fi management capabilities

The Wi-Fi management API now provides the ability to perform advanced scanning operations, for example to only scan on a particular band and/or channel range. The best way to start tinkering with the newly added functionalities is probably to use the wifi scan shell command. (PR #60686)

 Scan for Wi-Fi APs

    [-t, --type <active/passive>] : Preferred mode of scan. The actual mode of scan can depend on factors such as the Wi-Fi chip implementation, regulatory domain restrictions. Default type is active.
    [-b, --bands <Comma separated list of band values (2/5/6)>] : Bands to be scanned where 2: 2.4 GHz, 5: 5 GHz, 6: 6 GHz.
    [-a, --dwell_time_active <val_in_ms>] : Active scan dwell time (in ms) on a channel. Range 5 ms to 1000 ms.
    [-p, --dwell_time_passive <val_in_ms>] : Passive scan dwell time (in ms) on a channel. Range 10 ms to 1000 ms.
    [-s, --ssids <Comma separate list of SSIDs>] : SSID list to scan for.
    [-m, --max_bss <val>] : Maximum BSSes to scan for. Range 1 - 65535.
    [-c, --chans <Comma separated list of channel ranges>] : Channels to be scanned. The channels must be specified in the form band1:chan1,chan2_band2:chan3,..etc. band1, band2 must be valid band values and chan1, chan2, chan3 must be specified as a list of comma separated values where each value is either a single channel or a channel range specified as chan_start-chan_end. Each band channel set has to be separated by a _. For example, a valid channel specification can be 2:1,6-11,14_5:36,149-165,44
    [-h, --help] : Print out the help for the scan command.

Boards & SoCs

ESP32S3-CORE from LuatOS
  • A new ESP32S3-based developer kit is supported, the ESP32S3-CORE from LuatOS. My Chinese knowledge being more than limited, I don’t have a lot of details on this board, but LuatOS is apparently an open source project aimed at enabling Lua on constrained devices (16K RAM, 128K Flash). I don’t know if the LuatOS framework runs Zephyr under the hood, but I guess it’s now a possibility on the ESP32S3-CORE at least!

Drivers

  • If you are using the fuel gauge driver API, it now has support for battery cutoff (PR #61435). The main application for this functionality (also referred to as ship mode or shelf mode) is to help reduce battery drain while devices are stored.
  • The driver for nPM1300 PMIC now supports trigger mode. This is particularly useful to treat events such as “battery removed”, or “charge completed” as actual interrupts in your system. (PR #60677)
  • The newly added regulator-gpio driver introduces basic support for controlling a regulator using GPIOs (ex. 1 pin sets output voltage to X, another pin sets it Y, and another pin allows to enable/disable it). The documentation for the regulator-gpio binding actually does a great job of explaining the concept. (PR #58411)
  • On NXP S32 boards, the GPIO driver now allows you to use the pin_get_config() and port_get_direction() APIs. (PR #61590)

A big thank you to the 8 individuals who had their first pull request accepted this week, 💙 🙌: @bene42, @nguyenmthien, @butok, @danielstuart14, @andrmuel, @LuskeyNoah, @laroche, @sachinthegreen.

As always please feel free to jump in with your thoughts or questions in the comments below. See you next week!

If you enjoyed this article, don’t forget to subscribe to this blog to be notified of upcoming publications! And of course, you can also always find me on Twitter and Mastodon.

Catch up on all previous issues of the Zephyr Weekly Update:

Categories
IoT Zephyr

Zephyr Weekly Update – CodeChecker support

Happy Friday, folks! There is a really cool addition this week which I thought deserved a quick video to walk you through what it’s all about. Support for CodeChecker was just added, which means that it’s now super easy to run a wide variety of static analysis and code style rules against your Zephyr applications, and get very detailed, actionable, reports. Just keep reading, it’s literally the next section below 🙂

Codechecker support

As mentioned in the intro, this the most exciting thing for me this week. I have to admit I wasn’t familiar with CodeChecker and it really is an impressive tool. Not only is it very powerful and versatile for… well… code checking 🙂 but it also comes with a complete server infrastructure and web UI that allows you to track how many defects get added/resolved over time, collaborate with coworkers on flagging what might be false positives, etc.

CodeChecker Logo

After having played with CodeChecker for a few minutes today, I realized it would be even better if I would share my findings with y’all, so I recorded a video which goes through some of the cool features of the tool, and that shows you how easy it is to enable CodeChecker support for any Zephyr project.’, so I recorded a video which goes through some of the cool features of the tool, and that shows you how easy it is to enable CodeChecker support for any Zephyr project.

Check out the documentation page for more information on how to get started.

LVGL getting some love

All the glue code for LVGL, that used to live in Zephyr’s fork of the upstream LVGL repo, has now been moved to the main Zephyr repository. (PR #61300)

This will make it much easier to improve LVGL support going forward, and there are actually several pull requests lined up already that are really promising with regards to bringing significant performance improvements to LVGL in Zephyr.

Boards & SoCs

PHYTEC phyBOARD-Lyra
  • Support has been added for the YD-ESP32 dev kit. (PR #60067)
  • Support for ARM Cortex-M4F core of the phyBOARD-Lyra from PHYTEC has been added. (PR #60603)

Samples

  • The USB HID Mouse sample has been updated to leverage the Input subsystem. To quote the author, “this makes the sample much simpler and smaller”.
    Any board with USB device support and a set of 4 keys defined as INPUT_KEY_[0-3] will act as a mouse when plugged to a computer (for example, pressing Key-0 will be the equivalent of a left mouse button click). (PR #61104)

Drivers

  • To facilitate synchronization between heterogeneous processors, a hardware spinlock driver API has just been introduced, with a driver implementation for Sequans SoCs. (PR #60625)
  • ADC support is now available for ESP32-S3. (PR #60623)
  • A new IPM (inter-process mailbox) driver is available for AMD-Xilinx platforms. (PR #61008)
  • PWM support is now available for TI cc13xx_cc26xx. (PR #60828)
  • New Synopsys DesignWare timer driver (PR #60783)
  • New HyperRAM driver for Winbond W956A8MBYA. (PR #59845)
  • Microchip XEC tachometer sensor now supports low-power mode. (PR #60718)
  • Added support for Ambiq watchdog driver. (PR #61417)

A big thank you to the 9 individuals who had their first pull request accepted this week, 💙 🙌: @tnmysh, @0bijian0, @jcsxdev, @pbalsundar, @moradelk, @cesta2z, @Frauschi, @Christian-Marx, and @blemouzy.

As always please feel free to jump in with your thoughts or questions in the comments below. See you next week!

If you enjoyed this article, don’t forget to subscribe to this blog to be notified of upcoming publications! And of course, you can also always find me on Twitter and Mastodon.

Catch up on all previous issues of the Zephyr Weekly Update:

Categories
IoT Zephyr

Zephyr Weekly Update – Summer catch-up

I’ve made a terrible mistake! I went on vacation for a few weeks, and just before that also missed a couple of weekly updates due to bank holidays and a busy schedule… Now, I have 750+ merged pull requests to catch up on to try and give y’all a sense of what recently landed in Zephyr. I will do my best to do justice to all the great work from the community over the past month, but I apologize in advance if I miss a few things here and there. I’ll try to resume to a normal schedule next week!

Support for ext2 filesystem

In addition to FatFS and LittleFS, Zephyr now supports ext2fs! Heartfelt kudos to Franciszek Zdobylak for the amazing work on this one.

Together with this very significant contribution, a new file system sample has been introduced to make it easier to play with FAT and ext2 on either an SD card or internal/external flash storage.

LwM2M engine now 2x more power efficient

The OMA LwM2M device management protocol is primarily aimed at low-power devices operated over constrained, also low-power, networks. A recent refactoring of the LwM2M engine makes it possible to rely on a tickless approach for managing the LwM2M communications. The engine only wakes up when needed, as opposed to ticking (potentially needlessly) every 0.5s.

See new LWM2M_TICKLESS Kconfig option and PR #60887. Some very impressive charts there demonstrating the 2x improvement on energy efficiency (actual power consumption impact might differ based on the actual hardware).

Boards & SoCs

ST Nucleo WBA52CG
  • Initial support was added for the STM32WBA series from ST Microelectronics. It leverages the STM32U5 architectures and focuses on low-power and Bluetooth® Low Energy 5.3 use cases. (PR #60138)
  • Silabs SLTB009A board is now supported. It boasts an EFM32 Giant Gecko 12 MCU (Cortex-M4) and targets ultra-low energy applications. (PR #60137)
  • Intel Alder Lake (Intel’s codename for the 12th generation of Intel Core) reference boards are now supported. (PR #61072)
  • CY8CKIT-062S4 Pioneer kit from Infineon is an ultra-low-power device specifically designed for battery-operated analog sensing applications based on a 150 MHz Cortex-M4 CPU coupled to a 100 MHz Cortex-M0 for supporting low-power operations. (PR #60413)
  • NXP VMU RT1170 is now supported. In case you didn’t know, VMY stands for Vehicle Management Unit — think rugged and wide range of temperatures supported, and tons of onboard sensors: IMUs, barometer, magnetometer, GNSS module, … And, of course, it supports CAN bus! (PR #61192)
  • Google Twinkie is a dongle for, among other things, monitoring USB Power Delivery traffic. Twinkie V2 is now supported in Zephyr. (PR #54286)
  • The Intel Agilex5 FPGA platform is now supported. (PR #61192)
  • The R8A77951 and R8A77961 SoC series from Renesas are now supported, with added support for the H3ULCB and R-CAR Salvator XS M3 boards. (PR #57172)

Shields

Semtech SX1276MB1MAS LoRa shield.
  • The Semtech SX1276MB1MAS LoRa shield is an Arduino compatible shield based on the SX1276 LoRa transceiver from Semtech. Now supported! (PR #59889)

Drivers

  • New ADC driver added for Silicon Labs Gecko Series 1 (EFM32). (PR #60002).
  • New Ethernet driver added for STM32 H573I DK. (PR #60152)
  • USB-UDC is now supported for STM32 MCUs. (PR #53408)
  • Adds drivers for pwm on xmc4xxx using Capture Compare Unit 4 (CCU4)
  • Initial support for Infineon CAT1 counter driver.(PR #59626)
  • New NPCX flash driver for Nuvoton SoCs. (PR #60024)
  • New Andes qspi-nor flash driver means that you can now enjoy the ability to use flash memory on the Andes ADP-XC7K AE350 board. (PR #58718)

Display

  • A new auxiliary display driver has been added, namely the PTC PT6314 VFD controller. (PR #59728)
  • The Rocktech RK055HDMIPI4M MIPI Display is a 5.5 inch, 720x1280px TFT display + capacitive touch panel and can now be used as a Zephyr shield with NXP boards featuring a 40-pin FPC connector. (PR #55493)
G1120B0MIPI smartwatch display – Credit: NXP
  • Any wearable geeks out there? The G1120B0MIPI smartwatch display from NXP is now supported, also bringing support for the RM67162 display controller that it includes. Similar to the Rocktech display above, it is available as a Zephyr shield. (PR #57578)

Sensors

  • BMI08x IMU sensors from Bosch Sensortec are now supported. (PR #51545)
  • Added support for the Isentek IST8310 3-axis magnetic sensor. (PR #60639)
DFRobot A01NYUB distance sensor
  • DFRobot A01NYUB distance sensor, is now supported. It is a waterproof ultrasonic sensor module which can measure distance in the 28-750cm range with 1mm of resolution. (PR #58377).
  • ICM42688 motion sensor now has an emulated version in-tree. (PR #61051)
  • Existing TI LP503x LED driver has been extended to now support all variations of LP50xx devices. (PR #59852)

Bluetooth

  • New samples are available for the TMAP (Telephony and Media Audio Profile) broadcast functionality, more specifically Broadcast Media Sender and Broadcast Media Receiver.
  • Added support for advanced settings for QoS of isochronous channels. (PR #53945)
  • Common Audio Profile shell now allows to start specific audio configurations based on the BAP specification. (PR #58914)

Miscellaneous

  • TrustedFirmware-M (TF-M) version upgraded to 1.8. (PR #60226)
  • There is now an MCUmgr and a Simple Management Protocol (SMP) client. (PR #56934)

A big thank you to the 48 individuals who had their first pull request accepted since last time I posted, 💙 🙌: @dbongartz, @KyraLengfeld, @lutb-ot, @DaWei8823, @HoZHel, @rnpnr, @supcik, @xqinx, @TimMThomas, @joeker64, @bdmendes, @benner, @dluke62, @JDuchniewicz, @kobelev-dev, @mfikes, @shaggygi, @wsipak, @KarthikL1729, @Dalachowsky, @Crzyrndm, @valentinkorenblit, @avolkov-1221, @wangwillian0, @ggrs, @gdengi, @radsemijmitchell, @man-gc, @Flameeyes, @janhenke, @rubienr, @deining, @kmeinhar, @slpp95prashanth, @msobkowski, @vdsh-sc, @lawrencek52, @napl-nordic, @mbolivar-ampere, @aronlander-pe, @konradderda, @chencaidy, @MarGasiorek, @MarcelKr, @PetervdPerk-NXP, @ioannis-karachalios, @antoinebout0, @dey-r.

As always please feel free to jump in with your thoughts or questions in the comments below. See you next week!

If you enjoyed this article, don’t forget to subscribe to this blog to be notified of upcoming publications! And of course, you can also always find me on Twitter and Mastodon.

Catch up on all previous issues of the Zephyr Weekly Update: