fhunleth

fhunleth

Co-author of 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.

Showing Posts 1 to 10

LostKobrakai

LostKobrakai

I’m currently using the not yet release VintageNetLTE and I’m wondering how VintageNet is supposed to handle detachable devices (if so). Currently I’m simply polling usb devices and if a certain id comes up use it as ppp modem (after a modeswitch). Once I even had the raspberry pi in a short restart loop, while the usb stick was not attached at boot.

fhunleth

fhunleth OP

Co-author of Nerves

I think the short answer for VintageNetLTE (probably will get renamed since we’ve been using it with non-LTE technologies too) is we haven’t figured that part out yet.

For Ethernet, WiFi and USB virtual Ethernet connections, the core VintageNet will watch the availability of their corresponding network interfaces to react to hot-plug events. That doesn’t work with cellular modems, but at the moment, both projects that I knew of that are using VintageNetLTE have non-removable modems and hadn’t hit that issue yet.

Would it be possible for you to post your polling code in a GitHub issue? We will need to resolve this and having a working reference for people to use in the meantime would be really helpful.

fhunleth

fhunleth OP

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.

FGMGIT

FGMGIT

Hi, what about support for SIMCom chipsets. This from Waveshare, there are some other manufacturers of board for Raspberry using that chipsets. SIM7080 and SIM7600 are the newest.

fhunleth

fhunleth OP

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.

lawik

lawik

Nerves Core Team

Why is this giving me flashbacks to Ubuntu desktop and my first 3G modem.

FGMGIT

FGMGIT

Thanks I’ll do it.

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?

fhunleth

fhunleth OP

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.

nkokkos

nkokkos

This is such an awesome library. Thank you.

— All posts loaded —

Where Next? Top

Trending in Announcing Top

wojtekmach
Hey everyone! Req is an HTTP client for Elixir that I’ve been working on for quite some time. There is already a lot of HTTP clients out...
New
handnot2
Samly can be used to enable SAML 2.0 Single Sign On in a Plug/Phoenix application. This library uses Erlang esaml to provide plug enabl...
New
woylie
Flop is an Elixir library that applies filtering, ordering and pagination parameters to your Ecto queries. offset-based pagination with...
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
marciok
Hi there! We created Gust: A task orchestrator inspired by Airflow. For those who have never heard about Aiflow, it’s a Python-based wor...
New
fuelen
Hi all! I want to present a small library which provides a mix task for generating an Entity-Relationship Diagram for Ecto schemas. You...
New
anuaralfetahe
Hello Published a new library - ProcessHub! ProcessHub is a library designed to manage process distribution within the Elixir cluster. ...
New

Other Trending Topics Top

mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
AstonJ
This showed up on my feed.. anyone heard of it? Just hype? Ox Alpha is a reasoning model designed for coding, sustained ag...
New
sergio
It’s not that it’s vocabulary is too advanced. It’s something worse. I get lost trying to follow even a paragraph written by Claude. It’...
New
sorenone
Today we’re releasing Oban for Python. Not an Oban client in Python. Not a pythonx wrapper embedded in Elixir. Nope, it’s a fully operati...
New
akoutmos
@hugobarauna, Dr. Dimitrios Koutmos (my brother) and I (Alex Koutmos) have been hard at work on writing a book on how you can use Elixir ...
New
pferriby
Introductory paragraph I’ll be looking for a keen junior or someone that has a couple of years experience in the real world (so you’ve be...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews