I need to create an application which will work with some medical bluetooth devices. In fact, currently I do not need any real devices, but I need them to be in the Windows 7 Devices list. Also, there is no a bluetooth module installed on my working machine.
So, the question is:
Is it possible to add a fake/virtual device(s) into the system?
If yes, then is it possible to make them of a specific type, e.g. any kind of blood pressure measurement device etc.?
Related
Some background on my issue, my company sells single-use short life battery powered USB devices that certain customers require a certain 'profile' config programmed into the device before shipping. We currently sell them in batches up to 2000. Each one is plugged into a computer(Windows) with our configuration software running, the device is auto detected and then notified when completed. Takes roughly 10-15 seconds per USB device. No input is required on the computer besides inserting the device.
As you can imagine this is a very slow process that is increasing in frequency. The device shows up as mass storage device with about 100kb of storage. All devices have the same name when showing in My Computer. The issue is the programming software does not detect if multiple devices are plugged in, only loading the profile onto the first device plugged in.
Looking for a possible suggestion/solution to improve the speed of configuring these devices? My scratch pad idea was to buy 10-20 port USB hubs and possibly look at enabling one port in sequence every 20 seconds either with hardware buttons or software setup.
I'm not sure if this will work with your programming software, but since the devices present themselves as USB Mass Storage devices, you might be able to plug a bunch of them in at once, then use a script to dismount them all and mount only one device at at time. A one technique to do that is to use the mountvol command.
To unmount a drive
mountvol [DriveLetter] /p
To mount a drive
mountvol [DriveLetter]
Source:
https://superuser.com/questions/704870/mount-and-dismount-hard-drive-through-a-script-software
Another option would be to bypass the programming software entirely. You could use the programming software once to figure out what it is doing to the device (I would guess it's just copying some config file onto the drive). Once you know what it's doing, write your own script that can handle many devices in parallel.
Is there any way to allow only specific devices to connect a computer through MTP protocol in Macos as well as Windows and block the rest. Thanks in advance.
Since Windows and OS X are very different OS, there will be no uniform way to manage MTP devices on each of them.
For the Windows system I recommend you to investigate filter drivers.
For the OS X there is no default way to use devices through MTP, so you should decide what exactly users interactions you want to filter out, and then decide to block some library using or maybe write a kernel extension that will be filter out access to some /dev/xxx node.
I would like to know all of Lightbridge, Phantom 4 Pro, Inspiron 2's controller and drones communication method.
I have many drones from DJI including Phantom 4 Pro, Inspire 2, and Matrice 100.
I want to create a Lightbridge system that is mounted inside the controller through PC programming.
Because the DJI drones I purchased connect the mobile device and the controller with USB cable, and the controller and the drone communicate with the Lightbridge, so the controller must be in the middle of the communication system, but I just want to control the drones directly through my PC.
As a result, how can I imitate the Lightbridge system to communicate with my PC, control (takeoff,landing etc.) , and capture live images.
So I'd like to know about the Lightbridge that helps.
Lightbride is a proprietary protocol. That means we (I work at DJI) do not disclose or document the details of its implementation.
On another hand, removing the remote controller would mean you create/provide your own transmitter which add quite a lot of complexity.
The best way for you to control the aircraft from the PC at this point is to write a mobile app as a bridge and control the app through your PC.
Now, this can be done in a wired manner:
You could write an Android app with the mobile SDK on a device with ethernet such as Odroid and chain it all together.
I'm looking into NFC for use with Android phones and the newest iPhones. What I'm envisioning is some kind of NFC "broadcast" device plugged in via USB cable to a computer, so that it always sends out the most up-to-date information to whatever NFC-enabled phone is within close proximity. So far I've been seeing a whole lot of NFC "tags," which I assume are rather stupid devices that are pre-programmed with essentially static content. I'm wondering if there are any USB NFC devices on the market that can be more dynamic. Do such products exist? What's the best search keyword to find such a device? (What I've been searching for thusfar hasn't been turning up a whole lot of results.)
"NFC "broadcast" device plugged in via USB cable to a computer, so that it always sends out the most up-to-date information to whatever NFC-enabled phone is within close proximity" is your requirement. As I see in market there are NFC Readers with USB plugin to computer. They are active NFC devices generating 13.56MHz and mostly used for payment purposes. However they are putting these devices to ticketing, Office ID applications. When you bring your NFC Phone within this reader's proximity, the reader will read your phone's data and shall send it to the computer as encrypted data and will be verified in your Computer. In this process, phone acts as passive device while reader is active device.
You can also control this reader using your corresponding Software in computer which you wish as dynamic writing.
I think this might help you http://www.acs.com.hk/en/products/3/acr122u-usb-nfc-reader/
Do you know a way to use the Windows XP API to reset the USB bus? In other words, I'd like the OS to kick out any USB devices that are currently connected, and then auto-detect everything anew.
I'm aware of devcon, and I suppose I could do system calls out to it, but I'm hoping for a direct call into the API.
From kernel mode: You can force a specific USB device to be re-connected, as if it was unplugged and replugged again, by sending an IOCTL_INTERNAL_USB_CYCLE_PORT to its PDO. (This can only be done from a kernel mode, e.g. through a helper driver.) This 'cycle' operation will cause a USB reset to occur, after which the device would be re-enumerated. For example, if the device comes back with a different USB device descriptor, a different driver may be matched for it.
From user mode: You can do this by ejecting the device through the CfgMgr API. For example, to go over all USB hubs and eject all devices:
Find all devices having device interface GUID_DEVINTERFACE_USB_HUB with SetupDiGetClassDevs(... DIGCF_DEVICEINTERFACE).
Enumerate over the returned device information set (SetupDiEnumDeviceInfo).
For each device, get the DevInst member:
Invoke CM_Get_Child(DevInst) and then CM_Get_Sibling repeatedly to go over all child nodes of the hub (i.e. the USB devices).
For each child node, call CM_Request_Device_Eject.
Well, use can use the Setup API (SetupDiXXX functions) to enumerate the USB devices in the system, and then call WinUsb_ResetPipe on each one, but I'm not sure if that's what you're looking for. It's been a while since I worked with USB devices, but as I recall, there is no standard way to reset a device (i.e. simulate a power off/power on cycle). If it's possible for a particular device, you'd have to send an appropriate IOCTL (using DeviceIOControl) to the driver. The IOCTL would vary from manufacturer to manufacturer.
It's possible to cycle the parent port on the USB hub the device is attached to, as well. This will result in, among other things, apparrent unplug/replug actions, as you will see a balloon popup when this occurs.
Much of this is poorly documented, and honestly, I've gotten the impression there are only a handful of people at Microsoft who really understand it well. The design decision I've made for future devices I design is that I intend to include watchdog functionality on both sides, as well as a device-side full reset function. That way, if the device figures out it is confused, it can just cut its own power for a second and fully reset, if the host can't communicate with it, it could do the same thing, and if the device thinks everything is fine but the host knows better, the host could order it to reset.
There are at least three APIs worth looking into for this problem: the Setup API, the Config Manager API, and various WMI extensions. However, be cautious about diving into WMI if you intend to use an Embedded XP target, as you will have to include a lot of other things in your OS image you might otherwise not need.
As far as I know, there is no way to do this - you can issue a command to have PnP rescan the bus for new devices, but that isn't the same as issuing a bus reset.
Furthermore, just because from a hardware perspective you issued a bus reset doesn't mean that Windows will remove the PDOs that represent the children of the hub and redetect them; the USB bus driver can (and does) do just what I describe (i.e. issue hardware bus resets without disturbing the device tree), and only after the device doesn't respond does it issue the surprise removal and yank it from the tree.