Nova on Windows 10 IoT?

Hello. I see from an article from Oct 2017 that Hologram has plans for supporting Windows 10 IoT version.
Is that anywhere near ready for preview experimentation?

Hi @Steven_Zillmer

The Python SDK currently doesn’t work on windows due to the use of the FTNL library (unix file locking library)

You should be able to use a terminal with AT commands though

Andrei

@Steven_Zillmer

Internally we have a proof of concept written in C++ that gets the modem connected to the network. Unfortunately the python library that supports the functions needed to connect isn’t fully implmented and probably wont be seeing as the functions wrapped by it are quite old and haven’t been updated in 6 years. GitHub - mhammond/pywin32: Python for Windows (pywin32) Extensions

For reference to get the PPP connection we use the Remote Access Service and setup the modem as a dialup connection. This is possible using what exists in pywin32 (pywin32/rasutil.py at main · mhammond/pywin32 · GitHub) though can’t be fully automated like we prototyped in C++. You can manually setup the modem as a dialup connection and then connect using the dial function.

Also I am not sure that the pyroute2 library will work with Windows so beyond just getting the PPP connection there are likely other places in the python SDK that need to be adapted so that they will work on other platforms. I was hoping to work on this more over the holidays but haven’t had a chance to. I do want to make it so that the SDK can be more platform agnostic so that it will be just as easy to get working on the Windows 10 IoT version as it does on the Raspberry Pi and other linux devices.

Thanks for the updates. Would you care to provide a succinct but complete listing of steps required to manually establish the connection in Windows IoT? I see the device registered as Qualcomm CDMA Technologies MSM in the Connected Devices listing.

Unless your business model is completely balanced on your portal/dashboard and message passing SDK, I think it would be immensely beneficial to your company to decouple the driver/connectivity portion from the rest of the SDK, and strive toward providing “near plug and play” internet connectivity for as many devices as possible, such that the connection is available and usable by the system generally.

There is really a dearth of available options for plug and play cellular connectivity for iot devices, but plenty of options for devices that have cell connections but strong-arm you into particular SDKs/portals etc.

Your idea of providing carrier-neutral cell plans, connecting to whatever tower has the best signal (that is how you guys operate, correct?) is excellent, and if you could provide a gamut of modem options from full bandwidth LTE to the low bandwidth, high-penetration of Cat-M, that would be brilliant.

Some background: my company has an existing nationwide network of 20K+ IoT devices using 3G connections and needing to be updated to some variant of 4G. Since our bandwidth needs are low and since on-site cellular connectivity is the primary source of woe for us, it would be hugely beneficial to be able to try different options on-site to determine the optimal cellular protocol.

After 5+ years of running through a vendor’s AWS-hosted portal and dealing with the many issues of their hulking black box, we’re considering bypassing cloud solutions and adopting a model of edge devices with enough intelligence to filter data for minimal bandwidth consumption, then send messages to an onsite message broker, preferably through a private tunnel/APN.

I can’t speak so much for the business model and direction for the SDK since I am not involved with those decisions. I know the SDK tries to make it easy to connect different modems by abstracting that away slightly so it is not entirely predicated on the idea that people are tied to our dashboard/platform.

I will reach out to the Developer Relations team and see if we can get a write up on how to connect on the Windows 10 IoT platform within a few weeks. If you need something sooner than that let me know and I can try to expedite things though I have been working on this in my free time.

Also I think we do provide that full gamut as you mentioned since our Cat-M module should be released soon (How to understand the different LTE IoT device categories) Again I can’t speak as to when those exactly will be sent out or available but we have them in the office.

I think it would be very useful for people looking forward to using Nova on Windows IOT to have those manual configuration instructions out ASAP, but maybe that’s just my own eagerness speaking. :slight_smile:

FYI: I’m using the Cat-M model and have it successfully connecting on a Pi 3 (with additional commands inserted before the modem connect command). See NovaM_R404 USB modem on Raspberry Pi 3: ERROR: Unable to detect a usable serial port.

hi steven

it’s pretty straight forward.

you use the AT Commands to connect to a network that supports Hologram

After that you can use the language specific syntax to send data.

I am writing up how to use the sim cards with any device however an AT modem is a bit hard to get a hold of so waiting for my nova to arrive.

Andrei

As an update since I have had a little free time to work with the IoT Core more:

We are still hoping to find a more straightforward way but unfortunately the team behind the Windows IoT Core got rid of a ton of the networking features that exist in the Win32 API namely full RAS support to get the nova connected. I realize this seems contrary to what I said earlier but when testing it was emulated and now testing on an actual raspberry pi it seems that getting connected is more problematic than I had anticipated.

You can still connect via serial and here are the enumerated ports and their human readable names

USB\VID_1546&PID_1102&MI_06\6&1D8D6E49&0&0006 : USB Serial Device (USB Com) u-blox Modem USB4 GPS
USB\VID_1546&PID_1102&MI_02\6&1D8D6E49&0&0002 : USB Serial Device (USB Com) u-blox Modem USB2 AT and Data
USB\VID_1546&PID_1102&MI_0A\6&1D8D6E49&0&000A : USB Serial Device (USB Com) u-blox Modem USB6 Secondary Log
USB\VID_1546&PID_1102&MI_08\6&1D8D6E49&0&0008 : USB Serial Device (USB Com) u-blox Modem USB5 Primary Log
USB\VID_1546&PID_1102&MI_04\6&1D8D6E49&0&0004 : USB Serial Device (USB Com) u-blox Modem USB3 AT and Data
USB\VID_1546&PID_1102&MI_0C\6&1D8D6E49&0&000C : USB Serial Device (USB Com) u-blox Modem USB7 SAP
USB\VID_1546&PID_1102\357520072315613 : USB Composite Device
USB\VID_1546&PID_1102&MI_00\6&1D8D6E49&0&0000 : USB Serial Device (Modem) u-blox Modem USB1 AT and Data

There are tutorials for connecting to a serial device on the IoT Core which is pretty straight forward:

Then you just need to connect you modem via AT Commands which we are hoping to wrap up into something nice so that you can easily connect and get the data connection working. Since this is unoffical I will post it on my Github once I have an MVP and I’ll let you know.

Thanks, Dom. I’ll see what I can make of this later today.

I assume you’ve seen this doc on creating and installing packages (including driver packages) on WinIOT?

I tried repackaging the drivers and installing the problem is the nova drivers depend on a ublox library that I am not sure exists in an arm variant. nova drivers.zip (5.8 KB)

I did follow this method:

And it said it succeeded but the actual driver files didn’t show up in the system files and the devices never enumerated properly. Here is the cabs that were created: nova driver cabs.zip (22.0 KB)

I emailed ublox asking about arm support and if possible a universal driver. If I get anything noteworthy back from them I will post it here.

In the meantime if you want to get PPP running on the nova via serial these chat scripts are useful for the AT commands.

The unoffical repo is here for now:

Feel free to pick it apart and suggest improvements. I will try to release more soon once I have done some more testing but the desktop version works to get you connected at least.

1 Like

Windows 10 IoT core version is being uploaded now
Connection is confirmed but I intend to wrap it up in a simple connect()/disconnect() function
also I havent finished the write up about it but if you want to test it out its there

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.