Thanks for the advice Thomas & Alex. I'll probably do something in Python +
libnm (NM 1.0+) and expose the same interfaces that libnm provides.

Still need to figure out the best way serialize the D-Bus data for
transmission over BLE. I'm not super familiar with D-Bus, but maybe there
are some encapsulation / serialization strategies I can re-use? Or I could
use something like protobuf. Any thoughts / suggestions for this part?



On Fri, May 13, 2016 at 1:42 PM, Thomas Haller <[email protected]> wrote:

> On Fri, 2016-05-13 at 11:23 -0700, John Boiles wrote:
> > There's a problem I deal with that I bet a lot of other people deal
> > with as well: getting headless machines (for me, usually Raspberry
> > Pi) to connect to a wifi network. Usually this involves connecting
> > the hardware to a wired connection, then configuring wifi over ssh.
> > This is a pain, especially if the device is somewhere that's hard to
> > get physical access to.
> >
> > I've been thinking about creating a daemon that runs alongside
> > Network Manager that exposes an interface over BLE that can list and
> > configure wireless connections in network manager. Then, I could
> > create a simple mobile app that could remotely configure network
> > manager over BLE. This would allow for much easier wifi configuration
> > on headless devices. This could be especially useful now that the
> > Raspberry Pi 3 has both bluetooth and wifi built-in.
> >
> > I'd be down to build the iOS app (free and oss) and potentially the
> > part of the daemon that communicates over BLE, but could use some
> > help building the part that interfaces with NM. At very least some
> > architecture guidance would be helpful. Anyone interested in working
> > on this project?
> >
>
> Hi John,
>
>
> I don't know about BLE, but interfacing with NM works like this:
>
>
> Your daemon would D-Bus with NM. All other clients (nm-applet to nmcli)
> use the same interface.
>
> https://developer.gnome.org/NetworkManager/unstable/index.html
>
> D-Bus can be nicely implemented in most programming languages, so for
> example for a Python daemon, it should be pretty comfortable.
>
> NM core project also ships a glib-based client library that wraps the
> D-Bus interface: libnm. libnm might be more comfortable to use from
> python, via GObject introspection.
> Downside is, that libnm only exists for NetworkManager >= 1.0
>
> libnm is always available where NM is (so, it's not really an
> additional dependency).
>
> I personally would start without using libnm. I think using plain D-Bus
> tends to work nicely. But others might disagree here.
>
>
> There exists libnm-glib, which is a deprecated version of libnm. That
> one supports versions < 1.0 as well, but should not be used anymore
> because it doesn't get new features.
>
>
>
>
> NetworkManager generally thinks in terms of "connections" (aka
> profiles). You create and modify them. Then you "activate" them on a
> device, meaning to apply the configuration to a networking interface.
>
>
> See
> https://cgit.freedesktop.org/NetworkManager/NetworkManager/tree/examples
>
>
> best,
> Thomas
>
_______________________________________________
networkmanager-list mailing list
[email protected]
https://mail.gnome.org/mailman/listinfo/networkmanager-list

Reply via email to