Answered by:
Prolific Comm To USB driver not working

Question
-
Trying to install a Prolific Comm to USB driver for the cable. Use it if for switches etc.
I get the attached image error when trying to install in compatibility mode right at the end.
It's the x64 Win7 driver
Anybody have a workaround?.
Thanks,
Here;s the release notes from for the driver:
PL-2303 Driver Setup Installer, Prolific Edition
Setup Installer Revision Note History
=================================================
System Requirement:
. Supports the following Windows OSes:
- Windows 98SE
- Windows ME
- Windows 2000 SP4
- Windows XP SP2 and above (32 & 64 bit)
- Windows Server 2003 (32 & 64 bit)
- Windows Server 2008 / 2008 R2 (32 & 64 bit)
- Windows Vista (32 & 64 bit)
- Windows 7 (32 & 64 bit)
NOTE: For Windows 7, please use RC build 7100 or above.
. USB host controller
. Device using PL-2303H/HX/X version chip
Supported device ID and product strings:
. VID_067B&PID_2303 for "Prolific USB-to-Serial Comm Port"
Driver Versions:
-------------------
- Windows 98/ME Driver: v2.0.0.19
- Windows 2000/XP/Server2003 (32 & 64-bit) WDM WHQL Driver: v2.0.13.130
- Windows Vista/7/Server2008 (32 & 64-bit) WDF WHQL Driver: v3.3.11.152
Release Notes:
---------------
PL2303 Driver Installer v1.2.10
Changes from Installer v1.1.0:
Driver Changes -
- Windows Vista/7/Server2008 (32 & 64-bit) WDF WHQL Driver: v3.3.11.152
- Fixed BSOD issue when unplug device while data transfer
Installer Changes -
- Add "Modify/Repair/Remove" Menu when doing uninstall/update.
Installer & Build date: 1.2.10 (2010-4-08)
Language Support:
- English (default)
- Chinese (Traditional)
- Chinese (Simplified)
- Japanese
========================================
Prolific Technology Inc.
http://www.prolific.com.tw
- Edited by hazmat2012 Wednesday, August 22, 2012 5:38 AM
Answers
-
Hi,
Here is driver taken from win 7. Should work for both Win 8 X86/X64.
Don't forget to remove all not working drivers using device manager and check delete driver.
http://sendspace.com/file/5m5afw
- Edited by drtedrted Tuesday, November 27, 2012 1:16 AM
- Proposed as answer by Hiphoptech Thursday, January 9, 2014 10:08 PM
- Marked as answer by Brandon RecordsModerator Friday, January 17, 2014 3:58 PM
All replies
-
The driver is not for Windows 7. It should be very old, because I can see that it is for Windows 98 and Windows ME.
Please remember to click “Mark as Answer” on the post that helps you, and to click “Unmark as Answer” if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread. ”
-
The driver is not for Windows 7. It should be very old, because I can see that it is for Windows 98 and Windows ME.
Please remember to click “Mark as Answer” on the post that helps you, and to click “Unmark as Answer” if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread. ”
If you read the release notes I included, The driver package supports many OS's. I used this exact driver package for Win 7 x64 Ent and it worked perfectly.
-
I don’t know if this will help but I have a “Prolific USB-to-Serial CommPort” hookup. Recently there was a notice that there was an updated driverfor this so I checked it and it failed. I went back to the originalinformation for this specific cable and it needs to be unplugged from thedevice when installing the update.I took off the modem on this line, left the cable “Prolific USB-to-SerialComm Port” hooked up. It did the update, attached the modem and checkedsettings. It all worked after that step.Don
-
I got my end of life PL-2303 HXA USB serial converter to work on Windows8 64bit by doing the following.
Visit the prolific site and get the following driver:
PL2303_Prolific_Vista_332102 (Yes, this is a Vista installer which will install on Win7 but not Win8) Go figure!
Install PL2303_Prolific_Vista_332102 on a Windows7 machine. Once installed go to the C:\Windows\System32\Drivers folder and copy the file called ser2pl64.sys it should be 90KB if you use the 155KB file it will not work. Do not use the 155KB file. Copy the 90KB file to a USB drive
On the windows8 computer install the windows 8 driver PL2303_Prolific_Driverstaller_v_1_7_0 it's on http://www.prolific.com.tw/US/CustomerLogin.aspx use guest guest for user and password.
Run that installer then copy the 90KB ser2pl64.sys file into the Windows8 C:\Windows\System32\Drivers you will overwrite any other that is there.
Reboot or disable and enable the USB to serial in the device manager of Windows8 and it should work.
- Edited by RichM02145 Monday, November 12, 2012 9:25 PM model #
- Proposed as answer by philMacU Friday, April 11, 2014 11:58 AM
-
Hi there,
I need to get my EOL PL-2303 HXA working on windows 8, as well. Currently I get error 10 and the yellow triangle. My other computer runs XP Pro SP3. Anyone got any idea if I could do a similiar thing as RichM02145 has done for W7 to W8. ie are there files I could copy from my XP machine onto the W8 machine to achieve this. And how do I do it please?
Thanks ... John N
winesunswim
-
I got my end of life PL-2303 HXA USB serial converter to work on Windows8 64bit by doing the following.
Visit the prolific site and get the following driver:
PL2303_Prolific_Vista_332102 (Yes, this is a Vista installer which will install on Win7 but not Win8) Go figure!
Install PL2303_Prolific_Vista_332102 on a Windows7 machine. Once installed go to the C:\Windows\System32\Drivers folder and copy the file called ser2pl64.sys it should be 90KB if you use the 155KB file it will not work. Do not use the 155KB file. Copy the 90KB file to a USB drive
On the windows8 computer install the windows 8 driver PL2303_Prolific_Driverstaller_v_1_7_0 it's on http://www.prolific.com.tw/US/CustomerLogin.aspx use guest guest for user and password.
Run that installer then copy the 90KB ser2pl64.sys file into the Windows8 C:\Windows\System32\Drivers you will overwrite any other that is there.
Reboot or disable and enable the USB to serial in the device manager of Windows8 and it should work.
Hello. Great solution. Problem is I don't have a Win 7 or Vista install to grab the ser2pl64.sys file.
Would it be possible to attach it here? Perhaps zip and email me the file? Place it on a hosting service for downloading?
Thank you very much!
-
I got my end of life PL-2303 HXA USB serial converter to work on Windows8 64bit by doing the following.
Visit the prolific site and get the following driver:
PL2303_Prolific_Vista_332102 (Yes, this is a Vista installer which will install on Win7 but not Win8) Go figure!
Install PL2303_Prolific_Vista_332102 on a Windows7 machine. Once installed go to the C:\Windows\System32\Drivers folder and copy the file called ser2pl64.sys it should be 90KB if you use the 155KB file it will not work. Do not use the 155KB file. Copy the 90KB file to a USB drive
On the windows8 computer install the windows 8 driver PL2303_Prolific_Driverstaller_v_1_7_0 it's on http://www.prolific.com.tw/US/CustomerLogin.aspx use guest guest for user and password.
Run that installer then copy the 90KB ser2pl64.sys file into the Windows8 C:\Windows\System32\Drivers you will overwrite any other that is there.
Reboot or disable and enable the USB to serial in the device manager of Windows8 and it should work.
I was able to get the right 90K file mentioned above. However it will only let the device work if you turn driver signing off.
-
Hello,
Thank you for posting the above solution. I would love to resolve the issue I am having with my USB-to-Serial adapter which is exactly like the one described above (driver not working on Win 8 / 64-bit machine).
I do not see the PL2003_Prolific_Vista_332102 driver on on Prolific's web site:
http://www.prolific.com.tw/US/supportDownload.aspx
Is that where you downloaded the 90KB Driver from? Have they removed it since November 12 I wonder?
I did find the .zip and .exe on other web sites but was not able to generate said driver.
Thanks.
Kevin
-
-
Hi,
Here is driver taken from win 7. Should work for both Win 8 X86/X64.
Don't forget to remove all not working drivers using device manager and check delete driver.
http://sendspace.com/file/5m5afw
- Edited by drtedrted Tuesday, November 27, 2012 1:16 AM
- Proposed as answer by Hiphoptech Thursday, January 9, 2014 10:08 PM
- Marked as answer by Brandon RecordsModerator Friday, January 17, 2014 3:58 PM
-
Hi,
I had a problem using prolific PL2303 for win 7 driver installer.
My device com was correctly installed (checked from device manager); but I couldn't transfer data using usb/serial connection on Win 7 64bit systems.
Here is what I found:
Driver date: 19/11/2009 Driver version: 2.0.13.130 Driver details: File location File version Status C:\Windows\system32\DRIVERS\ser2pl64.sys 2.0.13.130 OK C:\Windows\system32\DRIVERS\serenum.sys 6.1.7600.16385 OK -------------------------------------------------------------------------- Driver date: 26/07/2012 Driver version: 3.4.36.247 Driver details: File location File version Status C:\Windows\system32\DRIVERS\ser2pl64.sys 3.4.36.247 NOT OK C:\Windows\system32\DRIVERS\serenum.sys 6.1.7600.16385 OK
windows update is updating ser2pl64.sys from 2.0.13.130 to 3.4.36.247 (especially after the prolific installer has been installed; or when you hit the driver update button from the driver properties).
Manually overwriting the driver file ser2pl64.sys version 2.0.13.130 does fix the problem.
You can reach that file version here on our FTP.
Unbelievable that prolific can't do a proper installer or having drivers which work with latest windows updates...
- Edited by CodeFire Thursday, November 29, 2012 3:33 PM
-
HI there,
I've found an answer to this problem that works for me. I'm in the UK but I guess this solution will be available to others should they wish to take it.
This is a copy that I posted on another forum ( www.blackbox-solutions.com) a vehicle diagnostics site.
""
Group: FAULTMATE MSV2 Owners
Posts: 21
Submissions: None
Joined: 08/04/2011
Member No.: 1,882
Hi Ronnie.
I have located a lead that works with Windows 8. This is a windows issue and not an MSV2 issue, but will of course effect owners who purchase a new computer with Win 8. The lead has an FTDI chipset and I have connected it and reinstalled Vehicle explorer and it works. This is the link to where I purchased it.
http://www.usbnow.co.uk and search for 48 ( this is their product number). I tried pasting the full link in here and although it shows on the input screen it doesn't come out on the 'preview post' for some reason.
This is their AUM-100 lead. USB to RS232 with FTDI Chipset currently priced at £10.45 and delivered very quickly."Hope this info helps someone out there!
Best wishes ...
winesunswim
-
Thank you. There is no other way, I've tried everything. You have to stick with Windows 7 for that chipset or move to Windows 8 with FTDI Chipset.
PS -The above is true, but read lower and you'll see I did actually find a working solution.
Hiphoptech
- Edited by Hiphoptech Thursday, January 9, 2014 10:24 PM
-
Just to document that I also got my GPS antennas (Pharos and GlobalSat BU-353) both working with Windows 8 32-bit using the same process.
The only difference is that I used the file named "ser2pl.sys" instead of "ser2pl64.sys".
Also, I placed the "ser2pl.sys" file into all of the following Windows 8 folders (found by doing a file search after the driver ver 1-7-0 install):
C:\Windows\LastGood.Tmp\system32\DRIVERS\
C:\Windows\System32\Drivers\
C:\Windows\System32\DriverStore\FileRepository\ser2pl.inf_x86_2d105b2c9e5e9abe\
C:\Windows\System32\DriverStore\FileRepository\ser2pl.inf_x86_5b1362ae5587f85d\
Worked perfectly - THANK YOU for this post!
-
I have to say that the base procedure is ok, very thanks. I must to add, that the file added by drtedrted in this thread is ok. We don't need install on windows7. Just replace ser2pl64.sys. A tip, dennied the permissions of ser2pl64.sys to system, because system will try to update that file everytime you connect again the usb-serial converter.
-
No need to copy files to the drivers directory, etc. at all! I got my PL-2303 USB-to-Serial-Converter running on a 32-bit machine with Windows 8 as follows. My Windows 8 installation is in German, so I have to translate.
- Go to the device manager and plug in your USB-to-Serial cable. The device icon should pop up in "COM & LPT" with a yellow mark that indicates that the device is not correctly installed.
- Double click to open its properties.
- Go to the "Driver" tab and hit the button to update your driver.
- I see two options "Automatically look for new drivers" and "Look for drivers on your computer". Choose to look on your computer.
- Now you may specify a path to look for drivers. Leave it blank and choose to select a driver from a list of drivers on your computer.
- On my computer it shows four different "Prolific USB-to-Serial Comm Port" drivers. Choose version 3.2.0.0.
The driver version 3.2.0.0 [31.07.2007] works fine on my Windows 8 32-bit installation, while the newer versions of the driver (3.3.5.122 and 3.4.36.247) do not. Hopefully, this helps someone out there.
- Proposed as answer by Rey6221 Wednesday, June 19, 2013 9:34 AM
-
-
-
We put together an installer package that works around this problem by:
- Removing any configured serial ports using a Prolific Driver
- Removing the current Prolific Driver
- Reinstalling the latest Prolific Driver
- Overwriting either ser2pl.sys (32 bit) or ser2pl64.sys (64 bit) with a version of the same file from an older prolific driver
- Resetting the registry entry for serial device enumeration such that the next inserted device becomes COM3.
You can download it here: http://www.brightledsigns.com/downloads/plclean.exe
We've tested it on Windows 7, 64 bit, but it should work for anything XP and above. Would appreciate any feedback on whether it worked for you (please include OS and whether 32 or 64 bit).
- Proposed as answer by BrightSigns Wednesday, March 6, 2013 5:37 PM
-
-
Vegan Fanatic pointed you here for Prolific.
CharliePel provided the user name and password to access support guest\guest
There, Prolific specifically addresses the issue and provides Windows 8 drivers, provided that you don't have a bootleg version of the product or the end of life version.
Prolific also recommends newer compatible products that will just plug and load.
Finally, as with all usb products, install the drivers first and then connect the device if Windows does not identify and install drivers after just plugging it in.
C'mon! Please read all that Prolific provides. End of story.
- Proposed as answer by Nano Warp Sunday, March 24, 2013 11:39 AM
-
-
I've tried plclean.exe on Windows 8 Pro 64 bit with the PL-2303 HXA and unfortunately it did not work. I might also mention that it was a USB 3.0 port.
Jeddam, End of Life version, it will not work. Please visit Prolific for a solution.
Yes I know. I have the PL-2303 HXD chip too but I am having problems with it. I have posted a question at stackoverflow regarding PL-2303 HXD and USB 3.0 and I have sent a support question to Prolific. I don't know what else to do. That is why I am trying to get the HXA working on Windows 8. The machine I have with Windows 8 only have USB 3.0 ports. (Dell Vostro 3560)
- Edited by Jeddam Monday, March 25, 2013 6:44 AM
-
Jeddam,
The device has only 32-bit drivers. Also, the Vostro has only 1 "power share" usb port, but the Dell product support doesn't say which one.
Regardless, Newegg has a device compatible with Win8 here with Win 8 drivers from the manufacturer here.
Don't do this
Move on to a product that will work.
-
-
-
Hi,
Here is driver taken from win 7. Should work for both Win 8 X86/X64.
Don't forget to remove all not working drivers using device manager and check delete driver.
http://sendspace.com/file/5m5afw
thank you.. it works..
- Edited by primaridha Saturday, May 4, 2013 1:12 PM
-
-
-
-
Hi,
Here is driver taken from win 7. Should work for both Win 8 X86/X64.
Don't forget to remove all not working drivers using device manager and check delete driver.
http://sendspace.com/file/5m5afw
it Works for me too in win8_x64, thank man you rule !!Yes, also for me.
I think that the most difficult for most of the people is how to avoid windows 8(.1) to take the newer driver again. It's very difficult to get rid of it.
I did it like this:
Open up Device Manager and right click the faulty Prolific USB-to-Serial Comm Port driver, with the warning in yellow. Then "Update Driver software ...", "Browse my computer for driver software", "Let me pick from a list of device drivers on my computer", "Have Disk ...", browse to the folder Prolific_Win8_x64_x86 with the older 3.3.2.102 drivers and double click on the ser2pl.inf file.
This worked for me.
-
-
Use these steps with the post I marked as "Proposed Answer" with the Sendspace link. These two combined worked well for me. You just have to update everytime you re-insert the USB to Serial adapter. Just keep the directory with the Profilic_Win8_x64_x86.zip unzipped on your local drive and use the steps above every time you need to use it. A little hassle but it's working so I'll stick to that method. Thank you for the details as this is also part of the answer. Couldn't get Windows to find the Vista installer and this didn't work for me on Windows x64.
Hiphoptech
-
Hi,
Here is driver taken from win 7. Should work for both Win 8 X86/X64.
Don't forget to remove all not working drivers using device manager and check delete driver.
http://sendspace.com/file/5m5afw
it Works for me too in win8_x64, thank man you rule !!Yes, also for me.
I think that the most difficult for most of the people is how to avoid windows 8(.1) to take the newer driver again. It's very difficult to get rid of it.
I did it like this:
Open up Device Manager and right click the faulty Prolific USB-to-Serial Comm Port driver, with the warning in yellow. Then "Update Driver software ...", "Browse my computer for driver software", "Let me pick from a list of device drivers on my computer", "Have Disk ...", browse to the folder Prolific_Win8_x64_x86 with the older 3.3.2.102 drivers and double click on the ser2pl.inf file.
This worked for me.
-
PL2303XA/HXA (CBR USB-COM(RS-232C)) ser2pl64. sys 3.3.2.105 27.10.2008, 3.3.2.102 Bug in driver:if set DTR=1 and RTS=0 then DTR (wire) will be =0 , RTS=0 (low level) not matter (все равно, несмотря на команду DTR=1) (level, using loopback test 3-2 ,1-4-6,7-8, ComEx from HiAsm 4 Alt build).
DTR=1 (level,+5V) will be only if DTR=1 and RTS=1 (in program), else =0.
How to fix this bug in Win7 x64 Home Base ? In Knoppix 7 ->need to patch pl2303.c (RTS,DTR control algorithm).
- Edited by USERPC01 Wednesday, April 9, 2014 11:56 PM
-
Test program for Hiasm 4
Add(MainForm,2953706,21,105) { Width=976 Height=593 Point(onClose) link(onClose,2455737:doWork2,[(71,132)(71,398)]) } Add(EnumCOM,15691736,98,245) { OutType=0 link(onEnumPorts,3955287:doAdd,[]) } Add(COMEX,10679999,203,427) { DataBits=1 Point(onRING) Point(onDCD) Point(onCTS) Point(onDSR) Point(onSetComState) Point(doRXClear) Point(doDTR) Point(doRTS) Point(doSetComState) link(onSyncWrite,1930118:doText,[(271,433)(271,349)]) link(onRead,10979187:doValue,[(345,440)(345,412)]) link(onSyncRead,3724314:doValue,[(345,447)(345,454)]) link(Port,6647147:Value,[]) link(BaudRate,16326190:Value,[(216,321)(370,321)]) link(onRING,6561896:doText,[(275,454)(275,468)]) link(onDCD,11709161:doText,[(281,461)(281,517)]) link(onCTS,12023232:doText,[(268,468)(268,559)]) link(onDSR,8285548:doText,[(258,475)(258,601)]) link(onSetComState,7542368:doText,[(249,482)(249,650)]) } Add(ComboBox,1302486,308,203) { Left=200 Top=30 Width=170 Height=24 Strings=#2:50|2:75|3:110|3:150|3:300|3:600|4:1200|4:1800|4:2000|4:2400|4:3600|4:4800|4:7200|4:9600|5:14440|5:19200|5:28800|5:38400|5:57600|6:115200|6:128000|6:256000| Text="Baud Rate" DataType=1 Point(onSelect) Point(onChangeText) link(onClick,16326190:doValue,[(352,216)(352,230)]) } Add(Memory,16326190,364,224) { link(onData,3506215:doText,[(407,230)(407,229)]) } Add(ComboBox,3955287,154,245) { Left=5 Top=30 Width=170 Height=24 Strings=#0:|4:COM1|4:COM2|4:COM3|4:COM4|4:COM5|4:COM6|4:COM7|4:COM8|4:COM9|5:COM10|5:COM11|5:COM12|5:COM13|5:COM14|5:COM15|5:COM16|5:COM17|5:COM18|5:COM19|5:COM20| Text="Port Number" Point(onSelect) Point(onChangeText) link(onClick,6647147:doValue,[(194,258)(194,265)]) } Add(Memory,6647147,203,259) { Default=Integer(9600) link(onData,213112:doText,[]) } Add(Button,14559517,7,245) { Left=15 Top=85 Width=80 Caption="Enum" link(onClick,5608508:doWork2,[]) } Add(Button,452509,112,322) { Left=15 Top=110 Width=80 Caption="Open" link(onClick,10679999:doOpen,[(187,328)(187,433)]) } Add(Button,11772522,112,364) { Left=15 Top=135 Width=80 Caption="Close" link(onClick,2455737:doWork1,[(177,370)]) } Add(CheckBox,12491755,84,497) { Left=235 Top=65 Width=75 Caption="DTR 1" link(onCheck,10679999:doDTR,[(177,503)(177,461)]) } Add(Button,6992723,84,455) { Left=105 Top=85 Width=80 Caption="RX Clear" link(onClick,10679999:doRXClear,[(174,461)(174,454)]) } Add(CheckBox,184272,84,539) { Left=235 Top=115 Width=80 Caption="RTS 1" link(onCheck,10679999:doRTS,[(160,545)(160,468)]) } Add(Label,1930118,294,343) { Left=635 Top=155 } Add(Label,6561896,308,462) { Left=395 Top=145 } Add(Label,4207733,371,462) { Left=320 Top=145 Width=52 Height=20 Caption="OnRing " } Add(Label,11709161,308,511) { Left=395 Top=65 } Add(Label,11544116,371,511) { Left=325 Top=65 Width=52 Height=20 Caption="On DCD" } Add(Label,12023232,308,553) { Left=395 Top=115 } Add(Label,382687,371,553) { Left=325 Top=115 Width=52 Height=20 Caption="On CTS" } Add(Label,8285548,308,595) { Left=395 Top=85 } Add(Label,6988529,371,595) { Left=325 Top=85 Width=52 Height=20 Caption="On DSR" } Add(Label,7542368,308,644) { Left=635 Top=125 } Add(Label,14659245,371,644) { Left=515 Top=125 Width=102 Height=20 Caption="On Set Com State" } Add(RichEdit,5827556,714,448) { Left=395 Top=180 Width=365 Height=320 ScrollBars=3 InsertCRLF=1 Point(FileName) link(FileName,1383569:Value,[(741,415)(797,415)]) } Add(Label,213112,259,259) { Left=145 } Add(HubEx,5608508,63,245) { link(onEvent,15691736:doEnumPorts,[]) } Add(Button,14188485,84,581) { Left=375 Top=30 Width=100 Height=25 Caption="Set com state" link(onClick,10679999:doSetComState,[(195,587)(195,475)]) } Add(Label,3506215,418,223) { Left=320 Top=5 } Add(RichEdit,8299331,533,300) { Left=15 Top=180 Width=365 Height=320 ScrollBars=3 InsertCRLF=1 Point(onChar) Point(FileName) Point(doCursor) Point(Handle) link(onChar,15117365:doWork1,[(575,313)]) link(FileName,10911216:Value,[(560,291)(783,291)]) } Add(Label,6235371,203,147) { Left=100 Top=160 Width=121 Height=20 Caption="Data for transmitting" } Add(Label,16289719,447,156) { Left=505 Top=155 Width=96 Height=20 Caption="Received data " } Add(HubEx,2455737,173,392) { Angle=1 link(onEvent,10679999:doClose,[(177,440)]) } Add(Memory,3724314,567,448) { link(onData,15554017:doCompare,[(611,454)(611,594)(450,594)(450,734)]) } Add(Memory,10979187,525,406) { link(onData,7009701:doCompare,[(563,412)(563,521)(441,521)(441,629)]) } Add(RadioButton,1452631,462,539) { Left=720 Top=20 Selected=0 Caption="Async" } Add(RadioButton,681468,463,673) { Left=720 Top=50 Caption="Sync" } Add(If_else,7009701,462,623) { Op2=Integer(1) link(onTrue,6366776:doData,[]) link(Op1,1452631:Selected,[]) } Add(DoData,6366776,525,623) { link(onEventData,13463060:doWork3,[(635,629)]) link(Data,10979187:Value,[]) } Add(DoData,12028296,567,728) { link(onEventData,13463060:doWork2,[(615,734)(615,601)]) link(Data,3724314:Value,[]) } Add(If_else,15554017,462,728) { Op2=Integer(1) link(onTrue,12028296:doData,[]) link(Op1,681468:Selected,[(468,716)(469,716)]) } Add(HubEx,13463060,631,595) { Angle=3 link(onEvent,5827556:doAdd,[(635,454)]) } Add(ODialog,13068799,707,245) { link(onExecute,5671635:doEvent1,[]) } Add(Button,4665630,651,245) { Left=15 Top=505 Caption="Load" link(onClick,13068799:doExecute,[]) } Add(Label,7547326,28,532) { Left=815 Top=275 } Add(Memory,10911216,777,245) { link(onData,10116895:doEvent1,[]) } Add(Label,7000143,868,245) { Left=20 Top=535 } Add(Hub,10116895,826,245) { OutCount=3 link(onEvent1,7000143:doText,[]) link(onEvent2,8299331:doLoad,[(847,258)(847,284)(507,284)(507,327)]) } Add(Button,1920478,427,350) { Left=90 Top=505 Width=85 Caption="Transmit" link(onClick,8050318:doWork2,[]) } Add(ArrayEnum,12635300,602,378) { link(onItem,15117365:doWork3,[(646,384)(646,349)]) link(Array,8299331:Array,[(608,362)(553,362)]) } Add(HubEx,15117365,571,343) { Angle=1 link(onEvent,10679999:doWrite,[(575,386)(191,386)(191,447)]) } Add(HubEx,8050318,544,350) { Angle=1 link(onEvent,12635300:doEnum,[(548,384)]) } Add(SDialog,8306008,742,350) { FileName="logtx.txt" link(onExecute,1383569:doValue,[]) } Add(Button,4087852,686,350) { Left=400 Top=505 Caption="Save" link(onClick,8306008:doExecute,[]) } Add(Memory,1383569,791,350) { link(onData,5827556:doSave,[(835,356)(835,419)(702,419)(702,482)]) } Add(Button,14492944,651,196) { Left=195 Top=505 Width=65 Caption="Save" link(onClick,15437328:doExecute,[]) } Add(SDialog,15437328,707,196) { FileName="logrx.txt" link(onExecute,14041053:doEvent1,[]) } Add(Hub,5671635,749,245) { InCount=2 OutCount=3 link(onEvent1,10911216:doValue,[]) } Add(Hub,14041053,756,196) { InCount=2 OutCount=3 link(onEvent1,5671635:doEvent2,[(782,202)(782,230)(737,230)(737,258)]) link(onEvent2,8299331:doSave,[(782,209)(782,271)(521,271)(521,334)]) }
- Edited by USERPC01 Thursday, April 10, 2014 12:29 AM
-
-
-
unit hiCOMEX; interface uses Windows, Kol, Share, Debug; const _nm: string = 'NOEMS'; dtrrts: string = 'offon '; type _COMSTAT1 = record Flags: DWORD; cbInQue: DWORD; cbOutQue: DWORD; end; TComStat1 = _COMSTAT1; type THICOMEX = class(TDebug) private hFile: THandle; thrd, thwr: PThread; OvrWr, OvrRd: TOverlapped; ReadStr: string; MaskRd: DWORD; SendedWr: Integer; procedure CloseCom; function SetCom(BaudRate: Integer; Parity, DataBits, StopBits: Char; DTR, RTS: string): boolean; function InitCom(BaudRate, PortNo: Integer; Parity, DataBits, StopBits: Char; DTR, RTS: string): boolean; function ExecuteRd(Sender: PThread): Integer; function ExecuteWr(Sender: PThread): Integer; procedure SyncExecRd; procedure SyncExecWr; procedure SyncExecSt; public _prop_Port:byte; _prop_BaudRate:integer; _prop_Parity:integer; _prop_DataBits:integer; _prop_StopBits:integer; _prop_DTR: byte; _prop_RTS: byte; _event_onSyncWrite:THI_Event; _event_onRead:THI_Event; _event_onSyncRead:THI_Event; _event_onDSR:THI_Event; _event_onCTS:THI_Event; _event_onDCD:THI_Event; _event_onRING:THI_Event; _event_onSetComState:THI_Event; _data_BaudRate:THI_Event; _data_Port:THI_Event; constructor Create; destructor Destroy; override; procedure _work_doOpen(var _Data:TData; Index:word); procedure _work_doClose(var _Data:TData; Index:word); procedure _work_doRXClear(var _Data:TData; Index:word); procedure _work_doWrite(var _Data:TData; Index:word); procedure _work_doDTR(var _Data:TData; Index:word); procedure _work_doRTS(var _Data:TData; Index:word); procedure _work_doSetComState(var _Data:TData; Index:word); procedure _work_doDataBits(var _Data:TData; Index:word); procedure _work_doParity(var _Data:TData; Index:word); procedure _work_doStopBits(var _Data:TData; Index:word); end; implementation constructor THICOMEX.Create; begin inherited; hFile := INVALID_HANDLE_VALUE; FillChar(OvrWr, SizeOf(TOverlapped), #0); OvrWr.hEvent := CreateEvent(nil, True, True, #0); FillChar(OvrRd, SizeOf(TOverlapped), #0); OvrRd.hEvent := CreateEvent(nil, false, false, #0); end; destructor THICOMEX.Destroy; begin // Ýòîò êîñòûëü ñâÿçàí ñ íåêîððåêòíîñòüþ óíè÷òîæåíèÿ êëàññà â FPC {$ifndef F_P} CloseCom; CloseHandle(OvrWr.hEvent); CloseHandle(OvrRd.hEvent); {$endif} inherited Destroy; end; function THICOMEX.SetCom(BaudRate: Integer; Parity, DataBits, StopBits: Char; DTR, RTS: string): Boolean; var PortParam: string; dcb: TDCB; cto: _COMMTIMEOUTS; begin result := false; if hFile = INVALID_HANDLE_VALUE then exit; //óñòàíîâêà òðåáóåìûõ ïàðàìåòðîâ GetCommState(hFile, dcb); //÷òåíèå òåêóùèõ ïàðàìåòðîâ ïîðòà PortParam := 'baud=' + Int2Str(BaudRate) + ' data=' + DataBits + ' parity=' + Parity + ' stop=' + StopBits + ' dtr=' + DTR + ' rts=' + RTS + ' xon=off odsr=off octs=off idsr=off'; FillChar(cto, sizeof(cto), #0); // óáèðàåì âñå TimeOut-û, òàê êàê áóäåì ðàáîòàòü ñ ïåðåêðûòûìè ìåòîäàìè if BuildCommDCB(PChar(PortParam), DCB) then result := SetCommState(hFile, DCB) and SetCommTimeouts(hFile, cto); end; function THICOMEX.InitCom(BaudRate, PortNo: Integer; Parity, DataBits, StopBits: Char; DTR, RTS: string): Boolean; var FileName: string; PortParam: string; dcb: TDCB; cto: _COMMTIMEOUTS; FModems: DWORD; begin result := false; CloseCom; FileName := '\\.\Com' + Int2Str(PortNo); // èìÿ ôàéëà hFile := CreateFile(PChar(FileName), GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0); if hFile = INVALID_HANDLE_VALUE then exit; //óñòàíîâêà òðåáóåìûõ ïàðàìåòðîâ GetCommState(hFile, dcb); //÷òåíèå òåêóùèõ ïàðàìåòðîâ ïîðòà PortParam := 'baud=' + Int2Str(BaudRate) + ' data=' + DataBits + ' parity=' + Parity + ' stop=' + StopBits + ' dtr=' + DTR + ' rts=' + RTS + ' xon=off odsr=off octs=off idsr=off'; FillChar(cto, sizeof(cto), #0); // óáèðàåì âñå TimeOut-û, òàê êàê áóäåì ðàáîòàòü ñ ïåðåêðûòûìè ìåòîäàìè if BuildCommDCB(PChar(PortParam), DCB) then result := SetCommState(hFile, DCB) and SetCommTimeouts(hFile, cto); if not result then CloseCom else begin thrd := {$ifdef F_P}NewThreadforFPC{$else}NewThread{$endif}; thrd.ThreadPriority := THREAD_PRIORITY_HIGHEST; thrd.OnExecute := ExecuteRd; thwr := {$ifdef F_P}NewThreadforFPC{$else}NewThread{$endif}; thwr.ThreadPriority := THREAD_PRIORITY_HIGHEST; thwr.OnExecute := ExecuteWr; PurgeComm(hFile, PURGE_TXCLEAR or PURGE_RXCLEAR); SetCommMask(hFile, EV_RXCHAR or EV_DSR or EV_CTS or EV_RLSD or EV_RING); if GetCommModemStatus(hFile, FModems) then begin _hi_onEvent(_event_onDSR, integer((FModems and MS_DSR_ON) = MS_DSR_ON)); _hi_onEvent(_event_onCTS, integer((FModems and MS_CTS_ON) = MS_CTS_ON)); _hi_onEvent(_event_onDCD, integer((FModems and MS_RLSD_ON) = MS_RLSD_ON)); _hi_onEvent(_event_onRING, integer((FModems and MS_RING_ON) = MS_RING_ON)); end; thrd.Resume; end; end; procedure THICOMEX.CloseCom; begin if Assigned(thrd) then begin thrd.Terminate; thrd.WaitFor; free_and_nil(thrd); end; if Assigned(thwr) then begin thwr.Terminate; thwr.WaitFor; free_and_nil(thwr); end; if hFile = INVALID_HANDLE_VALUE then exit; PurgeComm(hFile, PURGE_TXCLEAR or PURGE_RXCLEAR); CloseHandle(hFile); hFile := INVALID_HANDLE_VALUE; end; procedure THICOMEX._work_doOpen; begin CloseCom; InitCom(ReadInteger(_Data,_data_BaudRate,_prop_BaudRate), ReadInteger(_Data,_data_Port,_prop_Port + 1), _nm[_prop_Parity + 1], Int2Str(_prop_DataBits + 7)[1], Int2Str(_prop_StopBits + 1)[1], Copy(dtrrts, _prop_DTR * 3 + 1, 3), Copy(dtrrts, _prop_RTS * 3 + 1, 3)); end; procedure THICOMEX._work_doClose; begin CloseCom; end; procedure THICOMEX._work_doRXClear; begin if hFile <> INVALID_HANDLE_VALUE then PurgeComm(hFile, PURGE_RXCLEAR); end; procedure THICOMEX._work_doWrite; var BufferWr: string; Sended: DWORD; begin if hFile = INVALID_HANDLE_VALUE then exit; // if (not thwr.Suspended) then exit; BufferWr := ToString(_Data); WriteFile(hFile, BufferWr[1], Length(BufferWr), Sended, @OvrWr); thwr.Resume; end; function THICOMEX.ExecuteRd; var Signaled, BytesTrans, Err: DWORD; BufferRd: string; FStat: TComStat1; begin while not Sender.Terminated do begin WaitCommEvent(hFile, MaskRd, @OvrRd); Signaled := WaitForSingleObject(OvrRd.hEvent, INFINITE); if (Signaled = WAIT_OBJECT_0) then begin if GetOverlappedResult(hFile, OvrRd, BytesTrans, True) then begin if ((MaskRd and EV_RXCHAR) <> 0) then begin if ClearCommError(hFile, Err, @FStat) then begin if (FStat.cbInQue <> 0) then begin SetLength(BufferRd, FStat.cbInQue); ReadFile(hFile, BufferRd[1], FStat.cbInQue, BytesTrans, @OvrRd); if GetOverlappedResult(hFile, OvrRd, BytesTrans, True) then begin ReadStr := BufferRd + #0; SetLength(ReadStr, BytesTrans); _hi_onEvent(_event_onRead, ReadStr); if Assigned(_event_onSyncRead.Event) then Sender.Synchronize(SyncExecRd); end; end; end; end else if Assigned(_event_onDSR.Event) or Assigned(_event_onCTS.Event) or Assigned(_event_onDCD.Event) or Assigned(_event_onRING.Event) then Sender.Synchronize(SyncExecSt); end; end; end; PurgeComm(hFile, PURGE_RXCLEAR); Result := 0; end; procedure THICOMEX.SyncExecRd; begin _hi_onEvent(_event_onSyncRead, ReadStr); end; procedure THICOMEX.SyncExecSt; var FModems: DWORD; begin if GetCommModemStatus(hFile, FModems) then if ((MaskRd and EV_DSR) <> 0) then _hi_onEvent(_event_onDSR, integer((FModems and MS_DSR_ON) = MS_DSR_ON)); if ((MaskRd and EV_CTS) <> 0) then _hi_onEvent(_event_onCTS, integer((FModems and MS_CTS_ON) = MS_CTS_ON)); if ((MaskRd and EV_RLSD) <> 0) then _hi_onEvent(_event_onDCD, integer((FModems and MS_RLSD_ON) = MS_RLSD_ON)); if ((MaskRd and EV_RING) <> 0) then _hi_onEvent(_event_onRING, integer((FModems and MS_RING_ON) = MS_RING_ON)); end; function THICOMEX.ExecuteWr(Sender: PThread): Integer; var Sended, Signaled: DWORD; begin while not Sender.Terminated do begin SendedWr := 0; Signaled := WaitForSingleObject(OvrWr.hEvent, 500); if (Signaled = WAIT_OBJECT_0) then if GetOverlappedResult(hFile, OvrWr, Sended, True) then SendedWr := integer(Sended); if Assigned(_event_onSyncWrite.Event) then Sender.Synchronize(SyncExecWr); Sender.Suspend; end; PurgeComm(hFile, PURGE_TXCLEAR); Result := 0; end; procedure THICOMEX.SyncExecWr; begin _hi_onEvent(_event_onSyncWrite, SendedWr); end; procedure THICOMEX._work_doDTR; begin if hFile = INVALID_HANDLE_VALUE then exit; if ReadBool(_Data) then EscapeCommFunction(hFile, SETDTR) else EscapeCommFunction(hFile, CLRDTR); end; procedure THICOMEX._work_doRTS; begin if hFile = INVALID_HANDLE_VALUE then exit; if ReadBool(_Data) then EscapeCommFunction(hFile, SETRTS) else EscapeCommFunction(hFile, CLRRTS); end; procedure THICOMEX._work_doSetComState; begin if not SetCom(ReadInteger(_Data,_data_BaudRate,_prop_BaudRate), _nm[_prop_Parity + 1], Int2Str(_prop_DataBits + 7)[1], Int2Str(_prop_StopBits + 1)[1], Copy(dtrrts, _prop_DTR * 3 + 1, 3), Copy(dtrrts, _prop_RTS * 3 + 1, 3)) then _hi_onEvent(_event_onSetComState, 0) else _hi_onEvent(_event_onSetComState, 1); end; procedure THICOMEX._work_doDataBits; begin _prop_DataBits := ToInteger(_Data); end; procedure THICOMEX._work_doParity; begin _prop_Parity := ToInteger(_Data); end; procedure THICOMEX._work_doStopBits; begin _prop_StopBits := ToInteger(_Data); end; end. COMEX.ini [About] Version=1.10 Author=nesco Mail=hiasm@mail.ru [Type] Class=Element Info=Асинхронный COM порт Tab=Misc [Property] Port=Номер порта|4|0|Com1,Com2,Com3,Com4,Com5,Com6,Com7,Com8,Com9 BaudRate=BaudRate=Скорость порта|14|13|50,75,110,150,300,600,1200,1800,2000,2400,3600,4800,7200,9600,14400,19200,28800,38400,57600,115200,128000,256000 @DataBits=Число битов данных|4|0|7,8 @Parity=Режим проверки ошибок передачи|4|0|None,Odd,Even,Marker,Space @StopBits=Число стоповых битов|4|0|1,2 DTR=Состояние линии DTR по умолчанию|4|0|off,on RTS=Состояние линии RTS по умолчанию|4|0|off,on [Methods] doOpen=Открывает порт|1| doClose=Закрывает порт|1| doWrite=Записывает данные в порт|1| *doRXClear=Очищает буфер RX входа|1| *doDTR=Устанавливает/сбрасывает сигнал на линии DTR|1| *doRTS=Устанавливает/сбрасывает сигнал на линии RTS|1| *doSetComState=Переустанавливает параметры порта без его перезапуска. Буферы чтения и записи остаются нетронутыми|1| onSyncWrite=В случае успешной записи выдает в синхронном режиме кол-во записанных байт, иначе - 0|2| onRead=В случае успешного чтения выдает в асинхронном режиме прочитанную строку байт|2| onSyncRead=В случае успешного чтения выдает в синхронном режиме прочитанную строку байт|2| *onDSR=Событие происходит при изменении сигнала на линии DSR, выдавая в поток состяние этой линии в синхроннои режиме|2| *onCTS=Событие происходит при изменении сигнала на линии CTS, выдавая в поток состяние этой линии в синхроннои режиме|2| *onDCD=Событие происходит при изменении сигнала на линии DCD, выдавая в поток состяние этой линии в синхроннои режиме|2| *onRING=Событие происходит при изменении сигнала на линии RI, выдавая в поток состяние этой линии в синхроннои режиме|2| *onSetComState=Событие происходит после переустановки параметров порта (1 - успешная переустановка, 0 - неуспешная)|2| Port=Номер порта (от 1 до N)|4|1 BaudRate=Скорость порта|4|1
-
-
-
#ifndef __UNICODE__
#define __UNICODE__
#endif
#ifndef UNICODE
#define UNICODE
#endif
#ifndef _UNICODE
#define _UNICODE
#endif#include <windows.h>
#include <stdio.h>
TCHAR * serial_port = L"COM1";
void SetDTR_HIGHprocedure(HANDLE hfile)
{ EscapeCommFunction(hfile,SETDTR);
}void BlinkLED(HANDLE hfile)
{ while (TRUE){
EscapeCommFunction(hfile,SETRTS);
sleep(500);
EscapeCommFunction(hfile,CLRRTS);
sleep(500);
}}int main(int argc,char** argv)
{
HANDLE hfile = CreateFile(serial_port ,GENERIC_READ |GENERIC_WRITE ,
0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
if (hfile==INVALID_HANDLE_VALUE)
{
// MessageBox(NULL,TEXT("Serial Port Does not Exist!"),TEXT("LED ON"),NULL);
exit(0);
}
SetDTR_HIGHprocedure(hfile);
printf("SET DTR=1\n");
printf("Blinking RTS\n");
BlinkLED(hfile);
CloseHandle(hfile);
}RTS blinking with a DTR , EscapeCommFunction(hfile,SETDTR) error ;
after transfer 50 kb of data in SiMoCo transfer error rexpected (PL2303XA/HXA)
-
#include <windows.h>
LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam,
LPARAM lParam);HDC dc;
HWND button1, button2, button3,button4;int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpszCmdLine, int nCmdShow) {
WNDCLASS wc;
HWND hWnd;
MSG msg;
wc.style = CS_HREDRAW|CS_VREDRAW|CS_BYTEALIGNCLIENT;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = NULL;
wc.hCursor = LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
/*(HBRUSH)(COLOR_WINDOW+1);*/
wc.lpszMenuName = NULL;
wc.lpszClassName = "ButtonExample";
RegisterClass(&wc);hWnd = CreateWindow(wc.lpszClassName,"Switch 1.0",
WS_OVERLAPPEDWINDOW,100,100,600,90,
NULL,NULL,hInstance,NULL);button1 =
CreateWindow("BUTTON","SET RTS",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
10,10,120,40,hWnd,NULL,hInstance,NULL);
button2 = CreateWindow("BUTTON","SET DTR",WS_CHILD |WS_VISIBLE|
BS_PUSHBUTTON,
140,10,120,40,hWnd,NULL,hInstance,NULL);
button3 = CreateWindow("BUTTON","ON",WS_CHILD |WS_VISIBLE|
BS_PUSHBUTTON,
270,10,120,40,hWnd,NULL,hInstance,NULL);
button4 = CreateWindow("BUTTON","OFF",WS_CHILD |WS_VISIBLE|
BS_PUSHBUTTON,
420,10,120,40,hWnd,NULL,hInstance,NULL);ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
while (GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}LRESULT CALLBACK WndProc(HWND hwnd, UINT uMsg, WPARAM wParam,
LPARAM lParam)
{
HANDLE hPort;
hPort = CreateFile (TEXT("COM1"), GENERIC_WRITE, 0, NULL,
OPEN_EXISTING, 0, NULL);switch(uMsg)
{
case WM_COMMAND:
{
if ((HWND)lParam==button1) {
EscapeCommFunction (hPort, CLRDTR);
EscapeCommFunction (hPort, SETRTS);
MessageBox(hwnd,"CLR DTR,SET RTS"," ",MB_OK); };
if ((HWND)lParam==button2) {
EscapeCommFunction (hPort, CLRRTS);
EscapeCommFunction (hPort, SETDTR);
MessageBox(hwnd,"CLR RTS,SET DTR"," ",MB_OK); }
if ((HWND)lParam==button3) {
EscapeCommFunction (hPort, SETRTS);
EscapeCommFunction (hPort, SETDTR);
MessageBox(hwnd,"RTS,DTR ON","",MB_OK); }if ((HWND)lParam==button4) {
EscapeCommFunction (hPort, CLRRTS);
EscapeCommFunction (hPort, CLRDTR);
MessageBox(hwnd,"CTS,DTR off","",MB_OK); }
return 0;
}case WM_DESTROY:
{
PostQuitMessage(0);
break;
}
default:
{
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
}
CloseHandle (hPort);return 0;
} -
-
I think this is the simplest way that should make it work. I've tried this both in my Windows 7 and currently in my Windows 8.1.
1. download the driver version 3.3.11.152 in http://www.magicdriver.com/driver158759-ver_3.3.2.102.html ( although this is an old driver version, this works in most versions of Windows OS even the latest Windows 8.1 in my case )
2. Go to device manager, under Ports ( COM & LPT ) right click Prolific USB-to-Serial (COMx) then select Update driver software.
3. Browse for driver software on computer
4. Let me pick from a list of devices on my computer
5. Select Have Disk
6. On the bottom, Select Browse and then select location where you saved the driver for 3.3.11.152, you should be able to find ser2pl.
7. Open, then OK, then Next, then VOILA! it should be working now.
8. Scan hardware changes to verify.
Hopefully that solves it! Cheers!
-
-
-
-
Problem with Windows 10 WU
Solution with old driver :
-
The prolific driver version 3.3.2.102 works in Windows 10 with older Prolific cables (with real or fake chips). The latest version from the Microsoft driver repository does not because Prolific has deprecated the older chips because the Chinese were creating fake copies. It has nothing to do with Windows. The trouble is the web driver update from Microsoft's repository will update the driver by default unless you turn off the driver updating which of course then affects all other drivers that you do want to keep up-to-date.
So, instead you can use group policy editor to lock down the prolific driver by itself and leave automatic driver update enabled.
So although group policy editor only exists in Pro editions of Windows, it is just a front-end to the registry. So, to prevent the prolific driver from being updated in Windows 10/8/7 use the registry:
REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DeviceInstall]
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DeviceInstall\Restrictions]
"DenyDeviceIDs"=dword:00000001
"DenyDeviceIDsRetroactive"=dword:00000000
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DeviceInstall\Restrictions\DenyDeviceIDs]
"1"="USB\\VID_067B&PID_2303"
"2"="USB\\VID_067B&PID_2303&REV_0300"
"3"="USB\\VID_067B&PID_2304"I am as still uncertain whether the restrictions apply to the current hardware ID(s) or restrict installation of a new one hardware ID or both. The 2304 one above is the newer one and the 2303 ones are the 3.3.2.102 ones as currently installed... either way, I figured this would prevent installation of the latest driver. So far so good on Windows 10 Home. The older driver remains intact.
Basically, you can do this via gpedit.msc if you have Windows Pro, if not, do it via a reg file and import into the registry. Then all other drivers can still be updated via the default web search. I would also recommend hiding the prolific driver update in Windows update. In Windows 10, you must use the windows update troubleshooter to hide it...
I hope this helps others, Ted. My disclaimer is you are responsible for your own registry...
- Proposed as answer by Justin Goldberg Thursday, April 27, 2017 12:39 PM
-
-
The prolific driver version 3.3.2.102 works in Windows 10 with older Prolific cables (with real or fake chips). The latest version from the Microsoft driver repository does not because Prolific has deprecated the older chips because the Chinese were creating fake copies. It has nothing to do with Windows. The trouble is the web driver update from Microsoft's repository will update the driver by default unless you turn off the driver updating which of course then affects all other drivers that you do want to keep up-to-date.
So, instead you can use group policy editor to lock down the prolific driver by itself and leave automatic driver update enabled.
So although group policy editor only exists in Pro editions of Windows, it is just a front-end to the registry. So, to prevent the prolific driver from being updated in Windows 10/8/7 use the registry:
REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DeviceInstall]
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DeviceInstall\Restrictions]
"DenyDeviceIDs"=dword:00000001
"DenyDeviceIDsRetroactive"=dword:00000000
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DeviceInstall\Restrictions\DenyDeviceIDs]
"1"="USB\\VID_067B&PID_2303"
"2"="USB\\VID_067B&PID_2303&REV_0300"
"3"="USB\\VID_067B&PID_2304"I am as still uncertain whether the restrictions apply to the current hardware ID(s) or restrict installation of a new one hardware ID or both. The 2304 one above is the newer one and the 2303 ones are the 3.3.2.102 ones as currently installed... either way, I figured this would prevent installation of the latest driver. So far so good on Windows 10 Home. The older driver remains intact.
Basically, you can do this via gpedit.msc if you have Windows Pro, if not, do it via a reg file and import into the registry. Then all other drivers can still be updated via the default web search. I would also recommend hiding the prolific driver update in Windows update. In Windows 10, you must use the windows update troubleshooter to hide it...
I hope this helps others, Ted. My disclaimer is you are responsible for your own registry...
There are older versions of the prolific-signed driver floating around which do not block legitimate but older prolific chipsets. There's even a whole webpage dedicated to them. One is called 'Cables & Drivers - Prolific & FTDI - Miklor' and another is called 'FAKE PL2303 – HOW TO INSTALL ON WINDOWS 8.1'. Even though these pages say that it can get the fake or clone chips working, it will also get the older but real adaptors working as well (since the older ones have the usb vid and device-id which are generally in the clone chips).
It's a shame that owners of the legitimate hardware are the main ones being hurt by this. For example, GE Aviation uses them quite a bit.
Thank you for the registry edits though. Very valuable in certain environments.- Edited by Justin Goldberg Thursday, April 27, 2017 12:41 PM