very QMI

 

Official project updates

Nerves Networking - QMI and more
Lots of updates around VintageNet and Nerves networking overall. I touched on the QMI update last newsletter but since I barely know what it is I'll share Frank's clarification to make sure you get the right level of excitement and some actual technical detail:

There are two main ways of communicating with cellular modules.

The first is via a UART or serial port and sending AT commands to it. This is a commonly used and well-documented interface for embedded systems, but it has limitations. It's also not easy to switch between different cellular modems due to small differences in their AT commands.  It uses PPP for sending IP packets from Linux's networking stack to the modem.

The second way is to communicate with the modem over USB using the QMI protocol. This interface is more uniform across modems so it's easier to change modem suppliers. It also does not use PPP and instead exposes a network interface called "wwan0". This makes the modem look and feel more like a normal Ethernet interface and removes the annoyance of maintaining a PPP session.

- Frank

So this turned into these updates:
vintage_net_qmi, v0.2.5
qmi, v0.6.0

But wait, there's more in the networking:
vintage_net_wizard, v0.4.4 - Fix an issue preventing the wizard from timing out due to inactivity.
vintage_net_direct, v0.10.1 - Fix compiler warnings with Elixir 1.12
vintage_net_ethernet, v0.10.1 - Fix compiler warnings with Elixir 1.12
mdns_lite, v0.7.0 - Change dependency on VintageNet to be required to fix some errors and drop dns dependency to fix an Erlang 24 error.
vintage_net_wifi, v0.10.1 - An escape hatch for sending more advanced configuration to the WPA Supplicant has been added and initial support for WPA3 is in.

What's that you say? Those look like support for Elixir 1.12 and fixes  for Erlang 24! Is it official? Well...

nerves, v1.7.6 -  Support for Elixir 1.12
I don't know more than you about the current state of Erlang 24 but the changelog on this one tells me Elixir 1.12 is now a supported version. I'd expect there still to be some variation on the Erlang 24 end as that has more breaking changes.

Elixir 1.12 is pretty neat so this is great news.

ringlogger, v0.8.2
I think circular buffers are just conceptually very cool. In brief, if you ever want to keep some level of history, be it logs, video footage, events, photos and be able to look at the recent stuff without worrying about filling up with an endless stash of history a circular buffer can be neat. I know one of the Python Raspberry Pi camera libraries offers a ringbuffer API for footage. The ringlogger also uses a circular buffer, it is now an external dependency and it has had updates. If you want to see the updates you can use this comparison.

 
 

Community updates

The Remote Nerves Meetup
Community member Jason Axelson reports that the remote Nerves meetup is "pretty consistently the last wednesday of the month" which is helpful because I've not had much luck with attending so far. 08.00 PM MT says the site which is tricky because apparently the mountains have multiple time zones. Jason reports UTC -6 being the right one according to empirical testing. Contribute your sample size to figuring out when it is by attempting to attend and reporting back.

 
 

Featured project: Scenic Side Screen

by Jason Axelson

This is a Scenic-focused project brings in a number of interesting things. A Raspberry Pi 3B+ using the official 7" touch screen used to:

  • See and control Pandora music playback
  • Run a pomodoro timer
  • Control a Govee Bluetooth light with blue_heron

There is  also a companion project in LiveView for controlling the same Bluetooth/BLE setup.

If you are curious about BLE and blue heron, this is a project you might look at. I have those lights, I really should dig in.

Jason also has a very interesting setup with running Nerves on Vultr cloud instances which I hope he will do a write-up on because I think that's a pretty neat way of deploying something.

GitHub repo, Nerves project: scenic-side-screen
GitHub repo, LiveView app: govee_phx

 
 

Nerves technical note: Circuits

Embedded devices expose many different interfaces to communicate with external hardware such as GPIO pins, SPI, I2C, and UART. Circuits is a culmination of libraries to support this hardware communication within Elixir. These are primarily used in Nerves, but it is not a requirement. These libraries could be used on any device setup that can support the applicable interfaces and Elixir. See elixir-circuits.github.io for more info.

- Jon

 
 
 

Supporting the Nerves project

We want to encourage everyone to contribute in whatever way works for them. Here are some ways we currently recommend:

  • Write or port a new hardware library and include it in the Elixir Circuits collection.
  • Give money to the project via Open Collective.
  • Get in touch about taking over maintenance duties for some libraries, we might be able to provide you hardware.
  • Apply for an EEF stipend on something Nerves-related and build it. We can help if you have questions about this.
  • Send corrections or improvements for documentation wherever it fails to help you.
  • Write about Nerves, give talks about Nerves. Make videos about Nerves. It is all good.

Finally, if you have questions about the newsletter or want to suggest something you can simply respond to this email it will go directly to me, Lars, who edits this thing. Let me know what you think.

- Lars, Underjord.io

 
 
 
  Forward 

This newsletter is managed by Lars Wikman of Underjord.io for the Nerves project. With much love.

You are receiving this newsletter because you subscribed to the Nerves Project newsletter. If you are receiving this in error or no longer want to receive it you can unsubscribe below.
Preferences  |  Unsubscribe