Installing USB drivers before plugging in the device - usb

We have a device that requires we install drivers before it's plugged in, otherwise we need to remove the drivers that Windows 8 and 10 automatically download.
How do we make a USB driver installer that can install correctly whether it's plugged in first or not?

On Windows 10, my simple driver for usbser.sys with just an INF file and a CAT file will automatically take precedence over Microsoft's usbser.inf that they supply in Windows 10. But if that doesn't happen for your particular driver/device, you might look into using DevCon, an open source utility from Microsoft that can be used to list devices and update their drivers. I have never used DevCon in an installer, but I think I have noticed other installers that use it. There is an MSYS2 package for DevCon.

We use DPinst which is a Driver Package installer program that Microsoft supply. It is quite flexible & straightforward to use & can give you a pretty standard wizard UI.

Related

Relation between application .dll files and system installed .dll/.sys files (specifically, FTDI drivers)

I'm working on a project which uses the D2XX drivers from FTDI chip.
We are delivering the ftd2xx.dll file as part of our application. As far as I understand, the other files (e.g. ftdibus.sys) are installed on the system (at least for Windows) where the application runs. Linux is also a target for us, but let's ignore that for simplicity now.
My question is regarding the relation between these files? If, for example, I upgrade the ftd2xx.dll file delivered with our application, will users have to install the newest drivers? What if they do not?
In addition to the specific FTDI drivers, any general source of information on this area is also very welcome.
I used to work on a project that made use of FTDI's D2XX library.
There is no tight coupling between the exact version of ftd2xx.dll and ftdibus.sys. I believe the interface between ftd2xx.dll and the kernel mode driver is version independent at the basic feature level (at least since version 2.04.06 or so). There is even functions in the DLL to query DLL and driver versions respectively.
Thus, it can happen that they are 'out of sync'. I.e. ftd2xx.dll could be one from a more recent release than ftdibys.sys or vice versa. That is not a problem as such.
You are of course in complete control of the ftd2xx.dll version, but how does the driver package get installed? Is it installed as part of your application, or do you rely on the user obtaining the driver from another source? If your application has an installer, it could be an option to include FTDI's driver package in the installation. Thereby you will know which driver version is available.
What can be really tricky (and what has caused me headaches) is if there are other devices on the PC that use FTDI's chip. If such a device is supplied with media containing an older version of the driver and the user chooses to install this driver, it will simply overwrite any existing version of the driver (e.g. the version that your installer provided). This is a potential cause of regression, because FTDI has resolved a lot of bugs in the driver over the years.
If I were you, I would check the driver version at runtime and compare it to a version that is known to work (the version that you tested your application with). If the driver is older, suggest the user to upgrade it. Otherwise I would assume it is compatible.

Connect to WiFi from QML

Is it possible to connect to WiFi from QML (without writing some C++ code)?
According to this article it is possible. And this article starts right away with import B2Qt.Wifi 1.0, implying that such module is available, but I get an error module "B2Qt.Wifi" is not installed.
I have a commercial Qt 5.7 and I installed all the components, so it should be there. However, there is no module with such name in the entire installation directory.
I tried to do it on Windows and Linux with the same result.
Maybe I need to download this module from somewhere else? That would be weird though.
B2Qt means 'Boot to Qt'. It's for the devices where you prepare an image and then flash it onto the device.
So, it uses a specific network manager that is built into that image. And there is a B2Qt.Wifi module to configure that specific network manager.
I think it won't work with the network managers on desktop Linux, Mac or Windows.

Kinect v2 on Windows 7

So I finally got my two Kinect v2's in the mail, and was looking forward to get some raw data from them and see how much they interfere with each other. I went to go download the SDK, and for some reason I had never noticed the Windows 8 requirements... As in Windows 7 isn't supported.
This feels pretty bogus and unnecessary, but fine I can't do anything about that. Before I waste some money to upgrade my machine to an OS that I really don't want, is there any way to get the Kinect v2s to talk to a Windows 7 machine (or maybe even Ubuntu)? I don't need any of the fancy skeletal detection or anything; I just want raw xyz-rgb data. I was reading about OpenNI (and their new Apple overlords), and I was hoping that by some miracle their last open source distributions would be forwards compatible with the Kinect v2s?
TL;DR: Are there any free SDKs that can interface with a Kinect v2 on Windows 7-64bit?
look at libfreenect2
It looks like its not ready yet but there are people working on it. So you might want help them along.
Update 2014-10-28
The Project is live and kicking and works fine
Just dropping by to say that I successfully 'installed' the Kinect 2 SDK to windows 7 and it is being recognized by driver4vr.
I'm not precisely sure which files where required so I'll just post my process.
Install VirtualBox (and enable CPU virtualization in bios to support 64bit OS)
Install win 8.1 x64 in VirtualBox
Monitor the VirtualBox c-drive for changes (I used spy-the-spy)
Download and install the Kinect 2 SDK in VirtualBox
Check spy-the-spy for all files added, and copy them to your Windows 7 OS on the same location. (It also installs some VC redistributables, so skip the files already there)
Reboot windows 7 and enjoy Kinect 2.0 on the final decent MS OS.
The Windows 8 is MINIMUM requirement to developing kinect v2
you do not need use Skeleton(kinect V1) or Body(Kinect V2) to track body or skeleton .
you need use to MultiFrameSource Class

Processing affects current directory of Arduino environment

I have my processing code in dev/processing and my Arduino code put itself in Documents/Arduino.
However, whenever I get into one environment, it changes the most recent directory for the other because Arduino is written in processing.
Is there any quick way to disconnect the two environments so that they don't use the same location for "most recent directory?" I don't know whether the mechanism is a file, a registry entry or what, but I'm on Windows 8.1
I am using both Arduino IDE as well as Processing 2.1.2 in Windows 7 environment. It doesn't change the directory.
Since you are using Windows 8.1 (which is recently released), you may face very weird problems as those softwares are not tested on those OS. You will find errors for even other softwares that are designed before Windows 8.

Uninstalling OpenKinect Driver?

I've tried to uninstall the OpenKinect drivers but was unable to do so. What is the proper way to uninstall the drivers?
You should be able to remove them through the Uninstall Programs window in the Control Panel. If not, you could try going through the device manager and uninstalling anything related to the Kinect. If you're switching over to the official SDK, be aware that there are some limitations on using multiple Kinects at the same time which may not have been present with the OpenKinect stuff.
Normally deleting the driver in the device manager should work and it shouldn't matter if the Kinect is plugged in or not. You can also look up the driver name in the device manager and remove it manually from the system32 folder.