fhunleth

fhunleth

Co-author of Nerves

VintageNet - A new network configuration library for Nerves

VintageNet is new network configuration library built specifically for Nerves Project devices. It addresses shortcomings with NervesNetwork that made that library difficult to maintain and extend.

We’ve been working on VintageNet for a while and we’re finally ready for more people to try it out.

Currently, the library supports:

  1. Configuration for wired Ethernet, WiFi, and direct connections (to support USB gadget mode networking)
  2. WiFi AP mode use
  3. Network status and events via a simple get/subscribe interface
  4. Saving and restoring network configurations across reboots (you can turn this off if your application wants to take care of this)
  5. Connection monitoring and automatic switching between working interfaces. For example, you could set it up to prefer WiFi/Ethernet for internet access, but fail over to a metered connection should they not work.

If you would like to learn more about VintageNet, take a look at the following posts:

VintageNet is currently in production use. It is not yet in the Nerves documentation, examples, and new project generator. We will be working on making it easier to use in your projects over the coming months.

There are some caveats:

  1. VintageNet is not compatible with the nerves_init_gadget project. See nerves_pack for something similar.
  2. VintageNet requires minor Linux kernel and Busybox updates. We’ve updated the official Nerves systems, but if you’ve made a custom system, please see these notes. The error messages if you’re missing the updates are not easy to understand.
  3. Networking is harder than it looks especially when you need it to work unattended. If something seems weird or wrong, let us know. It could be in an area we haven’t verified (for example, WPA-EAP has a LOT of options and we’ve only deployed to two types of WPA-EAP setups so far).
  4. While not specifically VintageNet, if you’re using mDNS for discovery and it doesn’t work on WiFi, please check if your admin disabled multicast.

I’ve been wanting to update NervesNetwork for years, but it took SmartRent having a business need to make it happen. Thanks also to Connor Rigby, Matt Ludwigs, Jon Carstens and Justin Schneck, and also thanks to Le Tote and FarmBot who both put VintageNet into production early on and provided useful feedback.

Stay tuned for updates and let us know if you want to collaborate on supporting new types of networks or features.

Most Liked

fhunleth

fhunleth

Co-author of Nerves

We’ve made quite a bit of progress since the previous VintageNet. The current release is 0.7.7. While it’s currently pre-1.0, it is being used in production and API changes are expected to be small in the future. With the Nerves 1.6 release, it became the default network configuration library for new projects.

Since the previous announcement, the following are new:

  1. Cellular modem support via vintage_net_mobile - Several modems are supported out-of-the-box including ones supporting LTE CAT M1 and NB1 service. That’s the “IoT” form of LTE (basically slower and less expensive than the data service that you get on your phone).
  2. Enterprise WiFi support (WPA-EAP PEAP) in vintage_net_wifi and vintage_net_wizard
  3. WiFi captive portal creation - This is the network side. You’ll need to supply the webserver. The vintage_net_wizard is an example.
  4. Bug fixes and reliability improvements throughout

While the project README.md’s have the primary documentation, if you’re looking for copy-and-paste configuration examples, check out the cookbook.md.

fhunleth

fhunleth

Co-author of Nerves

My experience has been that the USB-based modems that support QMI tend to all basically work. The BG96 is a CAT-M1 modem so you might run into issues with service providers. The CAT-1 and better modules (EC21, EC25, etc) all should be low effort. I say “should” since error messages aren’t great for things like inactivated SIM cards or APN typos that will prevent the modem from connecting.

fhunleth

fhunleth

Co-author of Nerves

None of the SIMCom chipsets are currently supported. That doesn’t mean that you can’t use them, but they would require some work. It’s really hard to tell the level of effort until you plug a modem in since it could “just work” or require getting into Linux kernel drivers and usb_modeswitch. If you post a GitHub issue/PR to vintage_net_mobile, I can try to help.

At the moment, Quectel BG96 and EC25 modems are the best supported.

D4no0

D4no0

Hey, any updates on this?

I want to make a personal project where I need internet connectivity and I was wondering what is the best non-enterprise hardware you can use these days with nerves + RPI? Are Quectel BG96 and EC25 modems still the optimal solution?

Where Next?

Popular in Libraries Top

OvermindDL1
Been making an MLElixir thing (not released yet…) for fun in spare time in the past day. I’m just trying to see how much I can get an ML...
132 13487 106
New
arkgil
Hi all! I’m happy to announce that Telemetry v0.3.0 is out! This release marks the conversion from Elixir to Erlang so that all the libr...
New
benlime
I created a new library GitHub - benvp/ex_cva: Class Variance Authority for Elixir which aims to make it very easy to define different va...
New
Qqwy
TypeCheck: Fast and flexible runtime type-checking for your Elixir projects. Core ideas Type- and function specifications are const...
336 13801 100
New
entone
ExARI An Elixir library for interfacing with Asterisk using the ARI protocol. Be sure to check out the example application https://git...
New
woylie
I released Doggo, a collection of unstyled Phoenix components. Features Unstyled Phoenix components. Storybook that can be added to...
New
kelvinst
Hey everyone! Well, we made this lib a while ago and now we decided to finally go out and public with it! It’s a tool for creating and m...
New
pkrawat1
Presenting Aviacommerce, open source e-commerce platform in Elixir Aviacommerce is an open source e-commerce platform in Elixir. We at...
New
MRdotB
I needed to reuse React components from my Chrome extension in my Phoenix/LiveView backend. I noticed that for Svelte/Vue, there are live...
New
Antrater
Hi everyone! I’m thrilled to announce a huge thing. We have been developing Elixir Moon Design System for quite a while. We are finally ...
New

Other popular topics Top

TunkShif
This post is an instruction guide to help you setup your Neovim for Elixir development from scratch. It includes general information on h...
273 38985 115
New
pmjoe
I have a relationship of love and hate with Elixir. Lots of things are just absolutely right, but there are some things that are kind of ...
New
William
I would like to know that is there any online source for learning Phoenix Framework for building E-Commerce Store? Any advantage on build...
New
JorisKok
I have a server on AWS, and was running a load test using artillery. When looking at the Phoenix dashboard I see the Ports going to 100% ...
New
openscript
Hello! Sorry for this astonishing simple question, but I’m really stuck. I try to set up the intellij-elixir plugin, but I don’t know ho...
New
Jim
As a follow up to my earlier question: I have the code compiling and running but not getting a successful login from the rest server. ...
New
vertexbuffer
Hello, can anybody help here..? I have a list of players and I what to delete an element, but every for loop the list is reverting to ori...
New
myronmarston
The Elixir Typespec docs show the following syntax for keyword lists in typespecs: # ... | [key: type] # keyword lis...
New
danschultzer
None of the current solutions worked well for me, so I went ahead and built a user management system from scratch. This project took far...
548 27727 240
New
vonH
When I run the Plug and I recompile I wind up having to use Ctrl C to quit iex and start again. Witht the help of rlwrap I can use the cu...
New

Sub Categories:

We're in Beta

About us Mission Statement