WiFi: what does OS X call a "device"? - macos

Where I work, we are building a GUI to run on iOS or Android; the GUI is intended to control an embedded board. The embedded board does not have WiFi, an Ethernet port, or a USB port, but it does have an RS-232 serial port; so we are using a product called a WiSnap.
http://serialio.com/products/mobile/wifi/WiSnapKit2.php
We have been able to connect to the WiSnap using OS X, or using iOS (an iPad 2). But none of our Android tablets recognize the device at all. The WiSnap acts as a WiFi access point, and broadcasts an SSID; the Android tablets do not list this SSID in the list of available WiFi access points. Under Linux Mint 12, my Laptop can see the WiSnap, but attempts to connect to it fail. Interestingly, my cell phone (a Droid 2) is able to see the WiSnap, but I don't have telnet on my phone so I haven't tested to see if it actually works.
Under OS X, I noticed something. In the drop-down list of WiFi access points, there are two distinct groups: the top group, which contains most of the listed WiFi access points, then a lower group, that has a sub-heading that says "Devices" and contains just the WiSnap and something called "hpsetup". (I don't know what "hpsetup" is or where it might be; there are lots of WiFi users in this neighborhood.)
The WiSnap is operating in "ad-hoc" mode with no security at all.
So, my question is: what is the significance of OS X calling the WiSnap a "device"? It is frustrating to try to search Google for "WiFi devices"; you get a giant haystack of results that are not related to this.
Also, is there anything we can do to make an Android tablet see the WiSnap and connect to it?
Can anyone recommend a good resource where I can read up on WiFi? Again Google hasn't helped much; there are so many introductions to WiFi out there, most of them at a very simple level.
Thanks for any help you can give me.
EDIT: The vendor does claim Android compatibility for some models of WiSnap, but not for others.
This lists Android as supported: http://serialio.com/products/mobile/wifi/WiSnapKit2.php
This does not: http://serialio.com/products/mobile/wifi/WiSnapAAA.php
I guess I should contact the vendor, but I do want to understand what is going on, so I was hoping to get advice from the StackOverflow community about this.
EDIT: We did contact the vendor. What we found out is that the WiSnap can be a stand-alone device only in ad-hoc mode. If you set up a WiFi router or access point, the WiSnap will join the network in infrastructure mode. But the WiSnap will not act as an infrastructure mode access point.
Android OS at the moment only supports infrastructure mode. So, if we want to use an Android tablet with a WiSnap we would have to set up some sort of WiFi router or access point. We are looking into other solutions now.

I'm relatively sure that hpsetup is the ad hoc wifi for an HP wireless printer. So perhaps the ad-hoc/peer-to-peer qualifier is what causes OS X to classify it as a device.

Related

How do you disconnect a Bluetooth device in a Windows driver so that Windows doesn't lose it's pairing?

I'm currently working on a Windows driver for Nintendo Wii remotes and I want the PC to be able to disconnect the device without removing it's pairing. I know this behavior exists since my mouse is capable of doing it. What I want it to do is, when looking in Devices and Printers, the device should show as grayed out when off/out of range. Unfortunately I can't find any documentation on how to do this, either because I don't know what this exact behavior is called or because it's never clearly stated in the documentation. Does anyone have any idea how this is implemented?
EDIT: Realized this was probably not a Bluetooth specific feature since printers also make use of this and removed the Bluetooth tag.

Windows 10 Connect to Bluetooth Classic Device without Pairing

According to Microsoft's latest docs:
Do I have to pair Bluetooth devices before using them? You don't have
to for Bluetooth RFCOMM (classic) devices. Starting with Windows 10
release 1607, you can simply query for nearby devices and connect to
them. The updated RFCOMM Chat Sample shows this functionality.
However, when I try to connect to my devices using this chat sample, I get a notification that asks me to "set up the device", like I was going through a normal pairing process.
Am I missing something?
The snippet of code that I changed from the sample:
var rfcommServices = await bluetoothDevice.GetRfcommServicesAsync(BluetoothCacheMode.Uncached);
Taken from msdn resources:
Windows 10 Mobile is currently limited to connections with only paired
devices. In Windows 10, you can programmatically pair/unpair. See
scenarios 8 and 9:
https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/DeviceEnumerationAndPairing
Here’s is the related MSDN documentation on pairing and the relevant
device selectors for enumeration.
https://msdn.microsoft.com/en-us/library/windows/apps/windows.devices.enumeration.deviceinformationpairing.aspx
https://msdn.microsoft.com/en-us/library/windows/apps/windows.devices.bluetooth.bluetoothdevice.aspx
But I also know that you can use direct bluetooth connections on lower level and this way windows won't suggest you pairing. For example, that's how things work with 32feet.net library, discussed in this answer (I worked with it and it was fine, however it is currently unsupported so please beware of it).
First thing to test is the bluetooth protocol used to be RFCOMM in both client and server. Link
Check that both client and server hardware support the RFCOMM
Check the bluetooth versions in both client and server link
based on wikipedia bluetooth has many protocols.
Second is to check windows version

iOS and Android bluetooth connection differences

Just curious to understand why iOS devices connect to sphero directly but an app needs to do it in Android?
Well that's what I guess is happening because sphero will keep flashing in identity colours in Android until an app completes a connection.
To add: to use the option that keeps the sphero alive on the charger while connected to the client, then IOS would not need an app running but Android would. Well the Android app could have a service running to keep a connection open with sphero.
But ideally a consistent behaviour would be better.
Kasuku, you're correct in your post, but you also need to consider that the operating systems that you are comparing are completely different. For example, in Android it is possible to directly access the bluetooth adapter and "manually" connect to a bonded device. In iOS, this functionality is abstracted out from the developer.
To address BTLE:
No, as of right now Sphero currently does not support BTLE hardware.
OK ... as usual this tag seems to be dead so I post my finding anyway:
Bluetooth hardware that wanted to connect to IOS, but were not following one of the standard profiles (e.g. headsets), need to conform to Apple's proprietary MFI (Made for IOS) protocol. So the connection is established by the IOS system and then it allows apps to access this connection.
But now newer IOS devices support Bluetooth LE so the MFI restriction no longer applies. I think Sphero2B is going to use this. Current Sphero hardware probably doesn't support BT LE. My next question is ... does sphero hardware support BT LE? ... but I'm not going to ask on this forum:)
Android on the other hand allows apps to negotiate the connections to paired devices.
Here's a link with more info:
Some blog

Network Sharing Win 8 mobile

I found Network Sharing on Win8 mobile. (nokia Lumia)...I am trying to write similar application for Win8. But could not find any support on windows website. On Nokia website also, all I could find is how to turn on, but nothing else.
So, I have a lot of questions in my mind:
Is Network sharing is even supported by Windows or is it Nokia that has their own app to do this?
How this network sharing works? Are we tethering WLAN or something else?
Is it possible to write a similar app with the existing Win8 mobile APIs provided?
Does it use DNSMasq? ( I am assuming it is)
Is there any possible way to find the installed apps and the app structures in Win8 phone, like we have in android phones.
Network sharing is fully implemented by WP8 OS but it is under tight control from your cellular operator. You need to pay extra to enable "tethering" (here in USA). The cellular connection (4G, LTE) is then shared and your phone turns into Wi-Fi access point for other devices. When I try to enable network sharing on my HTC 8X (I am not paying for tethering), the screen flics with Wi-Fi details - tells me Wi-Fi broadcast name, password and number of guests connected - and then one second later I get a dialog from T-Mobile to go online and add tethering to my phone plan.
See above.
No, I don't think it is possible. As an app you don't have any control over network configuration.
I'd assume it provides NAT, DHCP and DNS forwarding. I don't think it uses DNSMasq code directly though. :-)
For privacy reasons you can't get a list of installed apps. Only when you are writing apps for enterprises (that don't go through Microsoft Store), you can list other apps signed with the same enterprise key. See http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj207245.aspx.

Unique, persistent, network device information

I've been trying write an application which will be able to connect to a network device via rndis or over wifi and perform some simple operations.
The kicker is that I want to be able to find a device I've connected to before, through either connection method. I initially figured I'd just check for a previously seen mac address, but I discovered that the rndis mac address and the wifi mac address don't match. I'm on windows so the next thing I tried was to use nbtstat -A and ping -a, but those didn't turn up anything unique either (I figured I might get a device name, but it doesn't seem to have one).
So my question is, is there any tool (ideally available for windows), which will allow me to retrieve some sort of unique information about a network device that will allow me to find it again? I don't have a huge amount of experience in this field so I'm not sure exactly what that would be, but I hoped that there may be a way to get the mac addresses for both network adapters while only connected to one, or perhaps use a different tool to find a device name that I'd missed.
Thank you for any advice you might give, I really appreciate it. Sorry if I'm overly wordy.
EDIT: In case I've been ambiguous. I am connecting repeatedly to an external device via RNDIS or WIFI from my desktop PC. My goal is to be able to consistently recognize the network device regardless of the connection method used.
EDIT: By networked device, I mean that I have small independant devices (such as cell phones or tablets) running a unix os, which I access from my Windows desktop via wifi or rndis, and that I would like to be able to consistently identify. So for example I might want to use this tool to connect to one of two cell phones and be able to recognize which one it is so I can recall previous operations performed with that device. So what I'm looking for is a unique (or semi unique) attribute of the cellphone available to me that is consistent when accessed via rndis or wifi.
You can get MAC address (and bunch of other network interface info) with built-in ipconfig command and parse its output later:
ipconfig /all
Alternatively, if MAC address is all you need, try getmac.

Resources