[<<] [<] Page 1 of 2 [>] [>>] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Subject:
Traffic lights as extreme feedback device controlled by a PIC via
USB
From: Holger Oehm ####@####.#### Date: 5 Aug 2012 12:26:41 -0000 Message-Id: <501E6643.9070509@holger-oehm.de> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi, I just put a project of mine using gputils on github: Project page: https://github.com/holgero/XFD Wiki: https://github.com/holgero/XFD/wiki The license is GPLv3. I believe it may be interesting for others because it contains an USB HID firmware implementation that needs only gpasm (no need for SDCC, MPASM or C18-compiler). The implementation is done for both pic18f2550 and pic18f13k50. The second thing worth mentioning is that it is controlled by a java application on the host side (and the host software works on Linux and Windows). There is no need to install any drivers or similar on the host side. Best regards, Holger. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAlAeZkAACgkQHdk+97UOUam2cwCggcX8vZDCWR59eLNOkP+PPHuD 260AniLRl1pVUErFJ0d7nVNsoH+nFF61 =3awh -----END PGP SIGNATURE----- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Subject:
Re: Traffic lights as extreme feedback device controlled by a PIC
via USB
From: Peter Stuge ####@####.#### Date: 5 Aug 2012 13:55:36 -0000 Message-Id: <20120805135532.13902.qmail@stuge.se> Hi Holger, Full disclosure: I'm the current libusb maintainer. Holger Oehm wrote: > an USB HID firmware implementation that needs only gpasm A gpasm USB firmware is really really awesome! Thank you for publishing! Get your product id here: http://wiki.openmoko.org/wiki/USB_Product_IDs I have reservations against using the HID bDeviceClass however. The device is not a Human Input Device, so it is a poor fit to use all the operating system code for handling input devices. I know how easy it is to be lured into the HID mess because of Windows, but if anything other than Windows matters in a project then there are significantly better alternatives. The HID class is not very portable and not very convenient, neither for host software nor firmware. It is optimizing specifically for Windows and if the kernel input subsystem is not intended to be used with the device then HID seems like crossing the bridge to get water. See also http://libusb.org/wiki/FAQ#CanIcreateadriverlessdeviceusingHIDclass > controlled by a java application on the host side > (and the host software works on Linux and Windows). Note that it is since Mac OS X 10.6 (or is it 10.7?) no longer possible to communicate with HID class devices using libusb. On previous versions it works, after writing a special codeless kext and rebooting the system. For cases where a given HID class device is unchangeable I strongly recommend using the C library HIDAPI, which uses native HID APIs. (Windows, Linux, Mac OS X, and BSD) But when you can influence the firmware then I very strongly recommend to skip the HID class and instead use the vendor specific bDeviceClass, 0xff. This allows completely effortless programming from userspace, with or without libusb, on Linux, Mac OS X, and BSD. No drivers involved. > There is no need to install any drivers or similar on the host side. This is true also with a vendor specific bDeviceClass, on all systems, including Windows, starting with Windows 8. Windows XP (sp3 IIRC) and later sends a request for string descriptor number 0xee the first time that a device is attached. Microsoft has created this extension to standard USB descriptors called MOD, Microsoft Operating system Descriptor. The string descriptor contains structured information which together with one type=vendor destination=device control request will tell Windows which driver should be used for the device. Microsoft calls a device which implements the descriptor and the control request per their extension a "WinUSB Device" [1] and for such devices Windows loads and binds the driver automatically, without any user interaction. Plug and play for USB finally also on Windows. The requirement for this to work is that the driver that the device says should be used has been set up correctly in the Windows registry - note driver, not device. The setup is needed only one time per driver, regardless of how many different devices use that driver. Windows 8 ships with Microsoft's WinUSB driver (for userspace USB communication) set up correctly for this out of the box. This means that if your device has the correct 0xee string descriptor and the correct control request, according to the Microsoft USB extension, meaning that it is a WinUSB device, then WinUSB is loaded and bound to your device immediately and transparent to the user when the device is plugged in to a Windows 8 system. Previous Windows versions (since XP sp3 IIRC) can be set up to have the same user experience as Windows 8 comes with out of the box. In the libusb community we have some little hope that Microsoft will sometime roll out this WinUSB driver setup as part of a Windows Update also for the older systems. That would be very nice. Meanwhile it is easy to do manually or in an application, thanks to the libwdi [2] project. libusb-1.0 works on Windows since some time, with all devices that use the WinUSB driver. (Please don't confuse libusb-1.0 with the separate libusb-win32, libusbK, and libusbx projects. libusb-1.0 is the continuation of the original libusb-0.1 project, and is actively developed.) libusb does not care *how* the WinUSB driver was bound to a device, the Microsoft OS descriptor and control request is not required for libusb to work, only for the WinUSB driver to be loaded automatically. The libusb-1.0 API is (like the libusb-0.1 API) intended for USB level communication with devices which have no driver in the kernel, meaning that the API offers primitives such as libusb_control_transfer(), libusb_interrupt_transfer(), and so on, which all device classes build on, and which are very easy to use. It's a lot simpler than dealing with the HID class encapsulation and restrictions for what can be done over USB. One of the authors of WinUSB support in libusb-1.0 is also the author of the libwdi project. He invented and uses the term "WCID device" instead of using Microsoft's term "WinUSB Device". (He doesn't want to work with me and libusb anymore, and strongly promotes his fork libusbx.) I prefer Microsoft's terminology "WinUSB Device" since it is after all their extension. Anyway, on the libwdi wiki [3] there is more detail about how WinUSB Devices work, and links to Microsoft's authoritative documentation. IMO, bDeviceClass=0xff plus WinUSB Device Microsoft extension is an excellent alternative to using HID class, because the device becomes truly portable, and developing both host software and device firmware allows working directly with the USB layer instead of caring about limits introduced by the HID class. Kind regards //Peter [1] http://msdn.microsoft.com/en-us/library/windows/hardware/hh450799(v=vs.85).aspx [2] http://sourceforge.net/apps/mediawiki/libwdi/index.php?title=Main_Page [3] http://sourceforge.net/apps/mediawiki/libwdi/index.php?title=WCID_devices | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Subject:
Re: Traffic lights as extreme feedback device controlled by a PIC
via USB
From: Holger Oehm ####@####.#### Date: 5 Aug 2012 17:04:48 -0000 Message-Id: <501EA773.4050305@holger-oehm.de> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi Peter, thank you for your long answer and also thanks for the hint with openmoko.org. Actually, I am already waiting for their answer to my application... :-). (I also applied at Microchip for a PID, but got no answer from them either.) And special thanks for calling it awesome, of course! :-))) > I have reservations against using the HID bDeviceClass however. Yes, you are right, of course I did this because of Windows only. But when I looked into the HID specification I saw that there were at least usages that were not such a bad fit for the device: There is this "LED Page (0x08)" in the "HID Usage Tables" which describes the device (apart from the exact colors) quite nicely. So I wrote the HID descriptor for my device using that page. It's not as if anything would really make use of the description, but it works for me. And it is fairly easy to use: (step 1: plug-in the device, step 2: download the jar file, step 3: run java with the jar file and the url of the build server as arguments (on Linux I added a udev rule for the device to get the permissions right)). The only drawback is that this HID stuff is a little bit bloated for no real benefit (other than enabling the device to run on Windows out of the box). I have to admit though, that I completely forgot about Macs. It looks to me, that changing the device class would involve quite some effort and, frankly, I am not sure if it is worth that. I just published the project and I cant know if there will be any demand at all from Mac users for it. Everybody else should be just fine (as long as HID.DLL or libusb.so are present in their systems), or am I missing something here? Also I am not sure if I understood the libwdi project pages correctly, but it seems that I would need to cross-compile the stuff there and ship shared libraries on windows together with the java application, right? I doubt that I can manage to make this as easy to use as it is right now. Additionally Windows 8 is not that wide spread at the moment that I could assume that this WinUSB driver was already present, right? So, at this time I would rather leave the HID description in the firmware as it is and wait a bit (either until Macintosh users demand to be able to use the device or Windows 8 being present on my PC at work or a Mac being present at home). Would that be all right with you? BTW: The need for permissions on Linux would not go away when I no longer need libusb to disconnect the kernel HID driver, or would it? Best Regards, Holger. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAlAep24ACgkQHdk+97UOUanFAQCZAa2wguqcg6xtPg0W2UB3qWve Er8AnjNmP3ucT5W26YT/gTrOWRxSVila =BqCp -----END PGP SIGNATURE----- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Subject:
Re: Traffic lights as extreme feedback device controlled by a PIC
via USB
From: Peter Stuge ####@####.#### Date: 5 Aug 2012 17:38:37 -0000 Message-Id: <20120805173833.30140.qmail@stuge.se> Hi Holger! Holger Oehm wrote: > thank you for your long answer and also thanks for the hint with > openmoko.org. Actually, I am already waiting for their answer to my > application... :-). All right! It will probably not take very long. > And special thanks for calling it awesome, of course! :-))) I think it is something that has been missing for a long time; a minimal gpasm USB stack. I would like to suggest that you make it a completely separate project, and to make XFD use it as a library. I think it's a very useful project for open source devices. If you had picked a less restrictive license (MIT, BSD, etc) then I believe that you would also see many commercial products use the stack, and perhaps get some contributions back from those users. The license is entirely your choice and I respect the GPL, but for embedded it unfortunately means that the whole project is not usable for professional users who develop proprietary products, and for things I do I like to try to include them too. :) > Yes, you are right, of course I did this because of Windows only. If Windows is your primary market then it's a good and wise choice. (But then the portability of Java is also somehow lost.) > But when I looked into the HID specification I saw that there were > at least usages that were not such a bad fit for the device: There > is this "LED Page (0x08)" in the "HID Usage Tables" which describes > the device (apart from the exact colors) quite nicely. Very true! The problem is more that almost nothing of all the HID usage table complexity is exposed in userspace input subsystem APIs. :\ Even on Linux, where there is even a dedicated LED subsystem, I don't believe that this works transparently, so the host program is doomed to handle all the HID class communication on it's own. > And it is fairly easy to use: (step 1: plug-in the device, step 2: > download the jar file, step 3: run java with the jar file and the > url of the build server as arguments step 0: install java ;) > (on Linux I added a udev rule for the device to get the permissions > right)). I would encourage you to look at HIDAPI. It calls native HID APIs on Windows and Mac OS X, and can be built to use hidraw on Linux. Then you don't need a udev rule. Devices with bDeviceClass=0xff usually end up with permissions on Linux that allow a generic usb, plugdev, or console group to access them without udev rule - but details vary slightly between distributions. > I have to admit though, that I completely forgot about Macs. It looks to > me, that changing the device class would involve quite some effort and, > frankly, I am not sure if it is worth that. Moving from HID to vendor specific would primarily consist of taking things away. :) > I just published the project and I cant know if there will be any > demand at all from Mac users for it. Everybody else should be just > fine (as long as HID.DLL or libusb.so are present in their systems), > or am I missing something here? I think that's correct. On a side note libusb.so is the libusb-0.1 library, an API which has been deprecated for very many years already. There are Java bindings also for the libusb-1.0 API. > Also I am not sure if I understood the libwdi project pages correctly, > but it seems that I would need to cross-compile the stuff there and ship > shared libraries on windows together with the java application, right? It depends on how much of libwdi you would like to use, and on which versions of Windows you require compatibility with. The older Windows the more work. :) > I doubt that I can manage to make this as easy to use as it is right now. No, I believe the plug and play user experience would actually become even better than with the current solution, not only seamless but also truly cross-platform. For the whole shebang with compatibility back to XP the download will indeed grow, but not by extremely much. > Additionally Windows 8 is not that wide spread at the moment that I > could assume that this WinUSB driver was already present, right? The WinUSB driver is included in every Windows since Vista, but it is only in Windows 8 that Microsoft has out-of-the-box support for WinUSB Devices with the special descriptor+control request. Ie. on older versions they already shipped the driver, but they didn't have it configured so that it would be automatically bound to any devices. (Even though they have been asking the device for the special info ever since XP sp3!) libwdi can easily configure older systems to support WinUSB Devices. It can be built both with and without the WinUSB driver included in the library. If built with the driver included then it'll work from XP and up. If built without, then the driver needs to be on the system already; ie. will work from Vista and up. > So, at this time I would rather leave the HID description in the > firmware as it is and wait a bit (either until Macintosh users demand > to be able to use the device or Windows 8 being present onery my PC > at work or a Mac being present at home). Would that be all right with > you? You decide this of course! :) I just wanted to share the info about libusb-1.0, WinUSB and WinUSB devices since it is not so widely known yet, and since it really is a huge step forward in both user experience on Windows and in portability for devices - while at the same time allowing to use much more of the broad spectrum of communications that USB offers. (The WinUSB driver doesn't support isochronous transfers, and has a few other odd limitations, but it's still a huge step up from HID.) > BTW: The need for permissions on Linux would not go away when I no > longer need libusb to disconnect the kernel HID driver, or would it? It depends on the distribution - but yes, on some distributions it would, because the desktop user often gets access to local devices. Unfortunately I don't have the data to give a quick overview on what happens where. :\ I'd appreciate any info anyone has about this! //Peter | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Subject:
Re: Traffic lights as extreme feedback device controlled by a PIC
via USB
From: Holger Oehm ####@####.#### Date: 5 Aug 2012 19:52:16 -0000 Message-Id: <501ECEB2.6050404@holger-oehm.de> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi Peter! Thank you very much for discussing this with me! > If you had picked a less restrictive license (MIT, BSD, etc) then I > believe that you would also see many commercial products use the > stack, and perhaps get some contributions back from those users. > > The license is entirely your choice and I respect the GPL, but for > embedded it unfortunately means that the whole project is not usable > for professional users who develop proprietary products, and for > things I do I like to try to include them too. :) Well I didn't write the firmware from scratch, it is derived from an implementation by Bradley A. Minch (see CREDITS[1]). I asked him for permission to publish my project under GPLv3 and under my name. So I am not sure if I am free to choose another license for the project. But of course I can ask him again if he would agree to other licenses, too. I would like to stick to something recognized by the FSF and compatible with GPL[2] (e.g. the Apache License, Version 2.0[3], would that work for you?). > step 0: install java ;) Ah, that is not necessary on a system I own (or where I have sufficient permissions). ;) > On a side note libusb.so is the libusb-0.1 > library, an API which has been deprecated for very many years > already. There are Java bindings also for the libusb-1.0 API. I should check out those bindings, that might be better than using JNA to access libusb.so. > libwdi can easily configure older systems to support WinUSB Devices. > It can be built both with and without the WinUSB driver included in > the library. If built with the driver included then it'll work from > XP and up. If built without, then the driver needs to be on the > system already; ie. will work from Vista and up. I dont know if I want to go through the hassle to set up a cross compiler for Windows, so a ready made binary were much easier. What about that Zadig standalone driver installer? Could I point to that for driver installation? But if I have to make my own installer then Vista and up would be enough for the Windows PCs I use. > You decide this of course! :) I just wanted to share the info about > libusb-1.0, WinUSB and WinUSB devices since it is not so widely known > yet, and since it really is a huge step forward in both user > experience on Windows and in portability for devices - while at the > same time allowing to use much more of the broad spectrum of > communications that USB offers. (The WinUSB driver doesn't support > isochronous transfers, and has a few other odd limitations, but it's > still a huge step up from HID.) I appreciate this information, I didn't know anything about WinUSB and this MS USB extension descriptor. And I think you convinced me now, switching to the vendor specific class is the better option. I am going to change the firmware and it is on the TODO list now (literally: [4]). What remains to do for me is now: 1. change the firmware: change the device class, add the 0xee string and the descriptor that says that the device wants the WinUSB driver. 2. describe (for windows users) how to use that Zadig standalone driver installer. Or better: configure libwdi to setup the WinUSB driver on Windows Vista and Windows 7, setup my Linux box to cross-compile it and create an installer. In the java application check if the driver is present and if not run that installer. 3. Get rid of that HID descriptor! Would that sum it up? Best regards, Holger. [1]: https://github.com/holgero/XFD/blob/master/CREDITS [2]: http://www.gnu.org/licenses/license-list.html#GPLCompatibleLicenses [3]: http://www.apache.org/licenses/LICENSE-2.0 [4]: https://github.com/holgero/XFD/blob/master/TODO -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAlAezq8ACgkQHdk+97UOUakKpQCfdL166i7utfGY3eXDHXLT/rAZ 3pAAoJJZ6/4FEgKOjhQhBpwb1bZQ98w3 =XZoN -----END PGP SIGNATURE----- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Subject:
Re: Traffic lights as extreme feedback device controlled by a PIC
via USB
From: Joe Pfeiffer ####@####.#### Date: 6 Aug 2012 17:23:23 -0000 Message-Id: <20511.64901.446456.914166@pfeifferfamily.net> Wow! Thanks so much to both of you. Holger -- I've been working on and off on a design for a shop oven for solder reflow and powdercoating. I realized a little while back that I could reduce my parts count by using USB instead of a serial interface, but haven't a chance to try to figure out the USB subsystem to proceed from there. Finding a good, basic implementation using gpasm is a tremendous help to me. Peter -- learning I can get a product ID for the oven is also terrific news. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Subject:
Re: Traffic lights as extreme feedback device controlled by a PIC
via USB
From: Holger Oehm ####@####.#### Date: 6 Aug 2012 18:50:49 -0000 Message-Id: <502011CB.30200@holger-oehm.de> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 06.08.2012 19:23, Joe Pfeiffer wrote: > Peter -- learning I can get a product ID for the oven is also terrific > news. And I can confirm that asking openmoko for a PID really works (and within only a week)! Today my device got its own address: 1d50:6039. Many thanks to openmoko! -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAlAgEccACgkQHdk+97UOUanl9gCePhTW4LhrejoW7LN390dvxuMj 7bMAn1yXwpC+ez4C0cXh/fF0PQrYqNCj =uBdX -----END PGP SIGNATURE----- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Subject:
Re: Traffic lights as extreme feedback device controlled by a PIC
via USB
From: Holger Oehm ####@####.#### Date: 10 Aug 2012 12:50:29 -0000 Message-Id: <50250356.50001@holger-oehm.de> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi, On 05.08.2012 21:51, Holger Oehm wrote: > What remains to do for me is now: > 1. change the firmware: change the device class, add the 0xee string > and the descriptor that says that the device wants the WinUSB driver. > 2. describe (for windows users) how to use that Zadig standalone > driver installer. > Or better: configure libwdi to setup the WinUSB driver on > Windows Vista and Windows 7, setup my Linux box to cross-compile > it and create an installer. In the java application check if the > driver is present and if not run that installer. > 3. Get rid of that HID descriptor! ad 1.+3.: Done. I created a branch named noHid [1] for the removal of the HID stuff from the project. In that branch I changed the firmware to use the vendor specific class (0xFF) and also added the string descriptor and the compatibility descriptor stuff. This seems to work, as zadig[2] recognizes the device as a WCID and also I can see in the windows registry all of the described entries (CompatibleIDs contains that USB\MS_COMP_WINUSB entry). ad 2.: No success so far. So far so good, but I cannot get zadig to install the WinUSB driver successfully. Using the advanced option and turning the debug level to debug I see that the driver installation complains about a file not found (from my memory: it was something like C:\usb_driver\Winusb_.....inf). But I could open the file in question with an editor, it was there. I have no idea what went wrong. I am kinda stuck there, do you think I should open an issue at libwdi[3]? And for the option to include libwdi to automate WinUSB driver installation: I understand that I need to have: 1. Windows DDK (download ISO image from MS, burn DVD, etc. etc.) 2. A cross compiler environment set up to compile it And I don't see how I can integrate all that stuff into the CI build of the project[4]. So I think I wont do that part. This of course means for a user of the device on windows the usage experience will definitely be somewhat worse than now (as long as WinUSB is not pre-installed). Best regards, Holger. [1]: https://github.com/holgero/XFD/tree/noHid [2]: https://github.com/pbatard/libwdi/wiki/Zadig [3]: https://github.com/pbatard/libwdi/issues [4]: http://travis-ci.org/#!/holgero/XFD -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAlAlA1IACgkQHdk+97UOUak8/ACeJquQQq7DTOj2T2f05ILYBBN3 RykAn2WpNU4Vedid5aT2H152NZ2iZmfx =a0ts -----END PGP SIGNATURE----- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Subject:
Re: Traffic lights as extreme feedback device controlled by a PIC
via USB
From: Peter Stuge ####@####.#### Date: 10 Aug 2012 13:13:45 -0000 Message-Id: <20120810131342.31188.qmail@stuge.se> Hi Holger, Holger Oehm wrote: > > What remains to do for me is now: > > 1. change the firmware: change the device class, add the 0xee string > > and the descriptor that says that the device wants the WinUSB driver. > > 2. describe (for windows users) how to use that Zadig standalone > > driver installer. > > Or better: configure libwdi to setup the WinUSB driver on > > Windows Vista and Windows 7, setup my Linux box to cross-compile > > it and create an installer. In the java application check if the > > driver is present and if not run that installer. > > 3. Get rid of that HID descriptor! > > ad 1.+3.: Done. > > I created a branch named noHid [1] for the removal of the HID stuff from > the project. In that branch I changed the firmware to use the vendor > specific class (0xFF) and also added the string descriptor and the > compatibility descriptor stuff. Wow, OK, as the final test you could try a Windows 8 Preview installation if Microsoft still make that available. It should then be enough to simply plug the device in, to make it run. How do you feel about the idea to make the generic USB stack a separate project? I think it would be fantastic, and a very nice way to spread gputils even wider in the industry if the license is also less restrictive. (I very much think that it is worthwhile to make a separate project even without changing the license.) > ad 2.: No success so far. > > So far so good, but I cannot get zadig to install the WinUSB driver > successfully. Huh - strange - that has always worked for me when other things failed. If the device is attached, you have to manually select 'display attached devices' or somesuch in the menu, after that it's literally just one click on the install button. Ah - are you doing the system-wide COMP_WINUSB setup, or an explicit setup for the device? I've so far only tried the latter. > Using the advanced option and turning the debug level to > debug I see that the driver installation complains about > a file not found (from my memory: it was something like > C:\usb_driver\Winusb_.....inf). But I could open the file in question > with an editor, it was there. I have no idea what went wrong. > > I am kinda stuck there, do you think I should open an issue at libwdi[3]? Perhaps you can try one or two older versions of the zadig build? I didn't use it for maybe a month or so, but the latest version at that time worked for me, for device-specific driver installation. > And for the option to include libwdi to automate WinUSB driver > installation: I understand that I need to have: > 1. Windows DDK (download ISO image from MS, burn DVD, etc. etc.) > 2. A cross compiler environment set up to compile it What is your development environment? Linux? Which distribution? Or do you develop also on a Windows system? Many Linux distributions already have a mingw cross-toolchain packaged. As for the DDK, it would be enough to download the ISO and mount it using loopback, if you are on Linux. IIRC the needed files are available directly, without having to install everything. > And I don't see how I can integrate all that stuff into the CI build of > the project[4]. Yes, adding a cross-toolchain may be tricky if you don't control the CI system. :\ > So I think I wont do that part. Well, maybe someone can help do it! > This of course means for a user of the device on windows the usage > experience will definitely be somewhat worse than now (as long as > WinUSB is not pre-installed). Hopefully doesn't have to happen. Let's see. //Peter | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Subject:
Re: Traffic lights as extreme feedback device controlled by a PIC
via USB
From: Holger Oehm ####@####.#### Date: 10 Aug 2012 16:38:50 -0000 Message-Id: <50253919.3040402@holger-oehm.de> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi Peter, > How do you feel about the idea to make the generic USB stack a > separate project? I think it would be fantastic, and a very nice way > to spread gputils even wider in the industry if the license is also > less restrictive. (I very much think that it is worthwhile to make a > separate project even without changing the license.) The modules in the project are already pretty much isolated. Therefore if the license is not standing in your way, you can already use the device folder alone and ignore the rest (or see it as an example for host programs or as documentation). There is no real assembly into a single artifact either, the folders more or less stand side by side and the top level Makefile just runs make sequentially in the folders. This means also that separating the modules into different projects would be no problem at all. If you say it helps to have separate projects, I will give it a try at the weekend. (Even if I am not sure how it helps). > Perhaps you can try one or two older versions of the zadig build? I > didn't use it for maybe a month or so, but the latest version at that > time worked for me, for device-specific driver installation. Yes, that did it! The previous version worked just fine and the device now has its generic WinUSB driver. Now I can start to re-write the java part for windows. Thanks for the tip! > What is your development environment? Linux? Which distribution? > Or do you develop also on a Windows system? It is a Linux From Scratch[1], so it is pretty much my decision what to include and what not (and my effort to get it to compile from sources). My PC at home is setup to dual boot also a Windows 7 installation, but I don't use that for development. (The only exception is that I recently installed Java and Eclipse on it, to develop the windows part of the host program for the device.) But I have no C compiler or similar installed on my windows partition. >> And I don't see how I can integrate all that stuff into the CI >> build of the project[4]. > > Yes, adding a cross-toolchain may be tricky if you don't control the > CI system. :\ And having a working CI build is important (this is after all the premise of the device! :-)). > Well, maybe someone can help do it! Yes, that would be great! I would certainly pull a automated windows driver installation, if someone can contribute that. Best Regards, Holger. [1]: http://www.linuxfromscratch.org/ -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEUEARECAAYFAlAlORYACgkQHdk+97UOUanwOwCgkw3s/f5IrUZ/nzLz9p8uj/Gg GPoAmKoe79Y+DuSQrmoD//8TKCN7KCo= =eHhV -----END PGP SIGNATURE----- | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[<<] [<] Page 1 of 2 [>] [>>] |