Is there something like a URI for USB devices? - usb

I'm wondering if there is a specification around to address USB devices like:
usb://...
Does anyone know?

There is a URN format which any device which supports the Universal Plug-and-Play protocol can use to advertise its capabilities:
When a device is added to the network, it multicasts discovery messages to advertise its root device, any embedded devices, and any services.
For example:
urn:schemas-upnp-org:device:deviceType:v
urn:schemas-microsoft-com:device:MediaCenterExtenderMFD:1
urn:schemas-wifialliance-org:device:WFADevice:1
urn:schemas-upnp-org:device:BinaryLight:1
urn:wifialliance-org:serviceId:
urn:microsoft-com:serviceId:NULL
urn:upnp-org:serviceId:SwitchPower:1
References
Remote Experience Advertisement Protocol: Appendix B: UPnP Device Description
Writing a UPnP Service
RFC 7255: Using the International Mobile station Equipment Identity (IMEI) Uniform Resource Name (URN) as an Instance ID
WFA Device 1.0 (pdf)
UPnP Technical Basics: UPnP Device Architecture (UDA) (pdf)
Nodejs implementation of the UPnP Device Architecture 1.1
Zoltan Balazs: The real risks of the IoT security nightmare (pdf)
Learning IoT Security: Jan 2016 (pdf)
Accenture Security Call to Action: IoT PoV (pdf)
The QName URN Namespace
URIs, URLs, and URNs: Clarifications and Recommendations 1.0
URL vs. URI vs. URN, in More Concise Terms | Damnhandy

Yes. Per kcmshell5 kcm_printer_manager, literally usb://.
https://learn.microsoft.com/en-us/dotnet/api/android.hardware.usb.usbaccessory.uri?view=xamarin-android-sdk-13&viewFallbackFrom=xamarin-android-sdk-9 may additionally provide USB URIs, but I have not evaluated it.

Related

How to do Homekit Software Authentication?

My company had developed his own smart home hardware which uses MQTT protocol. We can't use any Apple Authorization Coprocessor chip in our hardware. I have heard the apple had released Software Authentication for HomeKit.
But I searched a lot but not got how to do that.
I was using homebridge previously but that was a big trouble for supporting all devices. Can anyone please give me steps for how to do Software Authentication for HomeKit.**
Software or hardware authentication is used to verify with Apple that the accessory is an official "Made for iPhone" product. It's stands apart from the HomeKit Protocol that is specified here.
When your company wished to make official HomeKit Accessories, you must enroll your company to the MFI Program. (This is different than the Developer Program for making apps). When you are enrolled, you'll also get all the documentation needed for the Software Authentication.
Keep in mind that the software authentication is only an alternative so you don't have to use the hardware authentication chip. You still have to comply to all the requirements and rules of the HomeKit Protocol.
You are stating that you are using MQTT. Officially this can't be used to control your accessories with HomeKit. HomeKit must communicate directly with it's own protocol to the accessory. When you are using something like a bridge (What Philips Hue is doing). Then you may only control non IP or Bluetooth devices with that bridge. Please see chapter bridges from the specification. At the time of writing this is chapter 2.5.3.2 from Non-Commercial version R1: Accessories that support IP transports, such as Wi-Fi, must not be bridged.

Which USB device class/sub is used to define a USB token/dongle

I'm writing a driver for a custom HSM (USB Token). I need to know which USB class/subclass is the appropriate one for me. According to USB.org, here are a couple of them, that (by name) seem to be related:
Content Security Method 2 - USB Digital Transmission Content Protection Implementation 1.0
Device Class Definition for Content Security Devices 2.0
Smart Card CCID version 1.1
Smart Card ICCD version 1.0
Help, anyone?

What is the technical difference between webRTC communication and VoIP

can anyone help me what is the technical difference between WebRTC communication and the VoIP communication?
The question doesn't exactly make sense because it makes the assumption that VoIP is a technical stack, but it's not - it's a concept. The concept of sending Voice (V) over (o) Internet Protocols (IP). This means that different technology stacks can be used for accessing/capturing the media, establishing connections, negotiating streams, and transmitting streams.
WebRTC is one such stack (set of APIs, methods, and standards) for VoIP.
VOIP - Voice over Internet Protocol was a concept which came with popularity of internet. This involved using the internet to route voice telephony data, basically using existing IP infrastructure to transport audio streams without having dedicated circuit switched telephony. Over the time popular VOIP applications like Skype, Vonage and many in enterprise telephony came in.
VOIP had two parts one signalling , basically controller part and other actual media.
Actual media usually but not necessarily followed RTP (Real Time) protocol. RTP could carry both voice and video. Problem with RTP has been that browsers don't support it natively and it is not secure. You usually needed some sort of plugin to have VOIP work inside browser.
With WebRTC now popular browsers like FF, Chrome and Opera support a variation of RTP which is secure and can be natively invoked. Using WebRTC and browser Javascript you can send Voice, Video and Screen (it's video only) data to any other browser, which is cool.
VOIP : Voice over internet protocol uses DSL/Cable Modem voice over Wi-Fi/3G (VoWiFi/3G), voice over LTE (VoLTE), and Rich Communication Suite (RCS). VoIP is cloud-based, calls are sent as digital data and no cables are needed to send the call so any kind of Internet connection can be used to make calls and from a plethora of devices.
Web RTC: Web Real time communication use only OS browsers to communicate.
WebRTC requires the use of two main component JavaScript APIs.
WebRTC is an extension of VoIP to the browser world. It can reuse the existing VoIP infrastructure with incremental upgrades. This is good news for VoIP, as adoption of WebRTC only serves to increase overall VoIP proliferation.
Also, WebRTC is ideal for low-cost browser-based contact center applications. VoIP can serve embedded operator-driven VoLTE applications. Consequently, between WebRTC and VoIP, they can support wide range of consumer and enterprise applications.

How to use twin oaks DDS for an iOS app to communicate a non-iOS device?

We are using Twin Oaks DDS for windows. Can anyone help me in understanding how to use twin oaks DDS for iOS app to communicate with a non-iOS device??
Thanks,
Ravi Kumar
In general there are no special requirements for using CoreDX DDS from Twin Oaks to communicate between an iOS device and a non-iOS device. CoreDX DDS (as with most other DDS implementations) provides for platform independence.
You will need to link in the CoreDX DDS library (specific for the target hardware) into your iOS app, and use the DDS programming API to create publishers and/or subscribers as desired - just like on any other run-time platform.
The default transport mechanism of CoreDX DDS [the Real-Time Publish Subscribe (RTPS) protocol -- a combination of UDP unicast and multicast] is designed to support typical LAN environments, and will work well over WiFi. If you intend to communicate over cellular networks, be aware that the carrier may be using NAT or Firewall configurations that conflict with the standard UDP transport. In this case, you may consider using the TCP based transport.

Logitech Unifying Receiver Protocol?

Is there a place where I can find documentation or an SDK about the Logitech Unifying Receiver?
I recently obtained a wireless mouse, which came with a Logitech Unifying Receiver (a small USB dongle that plugs into the computer and communicates with the mouse/other compatible devices (such as keyboards)).
I wanted to try writing an app for my smartphone that pretends to be a mouse and sends data to the receiver.
I was able to monitor the data from the USB bus by using usbmon, and could probably use that to hack something out, but wanted to know if I could find the info I need somewhere on the internet without having to derive it on my own.
I'm going to try using SL4A on Android, if that helps any.
I have discovered some Logitech documents on a shared folder in Google Docs via this Chromium bug report. For convenience, I converted all doc(x) files to PDFs and put those on https://lekensteyn.nl/files/logitech/.
You will find Logitech HID++ 1.0 Specification for Unifying Receivers (pdf) very interesting, it describes the USB traffic (instead of the 2.4GHz wireless traffic as noted by Avery). My article Logitech Unifying for Linux: Reverse Engineering and unpairing tool documents a way to capture the traffic with usbmon and QEMU. It also includes tools to make the usbmon output prettier to read (for this protocol).
This is Avery, aka Tequals0. The USB dongle is a USB HID mouse/keyboard device, so all that traffic that you are seeing is basically generic HID traffic- if you want to pair your phone to your dongle, you will have to emulate the wireless traffic, not the USB traffic-that is generated by the dongle.
There is some info at Tequals0 blog, and AveryLouie also got some python tool operating with unifying