├── README.md ├── adb ├── 32-bit │ ├── LICENSE │ ├── README │ └── adb └── 64-bit │ ├── LICENSE │ ├── README │ └── adb ├── basefix.sh ├── binaries ├── blkid ├── fdisk ├── gdisk ├── hex2bin ├── lsblk ├── parted ├── partx ├── sfdisk └── sgdisk ├── devices ├── GT-I8730 │ ├── GT-I8730-msm8960-partition.csv │ ├── aboot.mbn │ ├── pitfile.pit │ ├── rpm.mbn │ ├── sbl1.mbn │ ├── sbl2.mbn │ ├── sbl3.mbn │ └── tz.mbn └── SCH-I535 │ ├── aboot.mbn │ ├── pitfile.pit │ ├── rpm.mbn │ ├── sbl1.mbn │ ├── sbl2.mbn │ ├── sbl3.mbn │ └── tz.mbn ├── hexmbn ├── chips │ ├── apq8064 │ │ ├── 8064_msimage.mbn │ │ └── MPRG8064.hex │ ├── msm8930 │ │ ├── 8930_msimage.mbn │ │ └── MPRG8930.hex │ └── msm8960 │ │ ├── 8960_msimage.mbn │ │ └── MPRG8960.hex └── extras │ ├── GPP8064.hex │ └── GPP8960.hex ├── qpst-drivers ├── amd64 │ ├── qcCoInstaller.dll │ ├── qcser.inf │ └── qcusbser.sys ├── qhsusb_dload │ ├── Qualcomm_QDLoader_32bit_Driver.inf │ ├── Qualcomm_QDLoader_64bit_Driver.inf │ └── qcusbser.sys └── x86 │ ├── qcCoInstaller.dll │ ├── qcser.inf │ └── qcusbser.sys ├── scripts ├── backup.sh ├── dump.sh ├── get-part.sh ├── get-partitions.sh ├── getpartbin.py └── qdload.pl └── unbrick.sh /README.md: -------------------------------------------------------------------------------- 1 | unbrick_8960 (version 1.1) 2 | ================================= 3 | 4 | ## What is it? 5 | 6 | This tool is designed to unbrick devices with Qualcomm chips MSM8960/8930 and APQ8064. 7 | It only works with devices that are stuck in QDLOAD (`05c6:9008`) / SDBOOT (`05c6:9025`) mode. 8 | 9 | ## How do I use it? 10 | 11 | 1. Connect device to a USB port on a Linux PC. 12 | 2. Run `sudo ./unbrick.sh` in a terminal. Make sure it is executable (`chmod +x ./unbrick.sh`). 13 | 3. Follow on screen instructions. 14 | 15 | ## What does it do? 16 | 17 | This tool will detect devices in QDLOAD mode, switch to DMSS protocol and upload a hex (converted to bin for this purpose). 18 | 19 | The hex is then executed and the device switches to Streaming Protocol, at this point we write a .mbn file to the internal 20 | eMMC chip, at the end of the emmc write process the device then reboots. 21 | 22 | After the reboot re-running `unbrick.sh` with detect the device in the second stage for repair, 23 | the device's eMMC is accessible as an SD card, we then write back the damaged parts of the bootchain. 24 | 25 | You must write a new partition table or the device will always boot in SD card mode. 26 | 27 | **WARNING:** Failure to write the rest of the boot chain could leave your device in a dead state 28 | with only a black screen, no USB mode. The only way around that is through JTAG, or finding the boot resistor 29 | which switches the device back to QDLOAD mode, or emergency boot. 30 | 31 | Go to [this XDA thread](http://forum.xda-developers.com/showthread.php?t=1914359) for further details. 32 | 33 | ## This tool doesn't work at all. What's the deal? 34 | 35 | This happens a lot, actually. The truth is, the hex/mbn files for each chip usually differs for each phone; although the phones in question do have the same chip. This is why you should really be backing up these files before your device goes kaput. 36 | 37 | Refer to the next section. 38 | 39 | ## My chip isn't listed. How do I get the files needed? 40 | 41 | Unfortunately these files are only available through leaks, and as such are hard to come upon. If you do have the `MPRGxxxx.hex` file for your device and you only need the `xxxx_msimage.mbn`, [this guide](http://cellphonetrackers.org/wp-content/uploads/8x60_msimage.mbn_.txt) is worth a try. (You'll need Windows and the [QPST software suite](http://d-h.st/qAy) for this, though.) 42 | 43 | Another option would be to point a friend with the exact same device as yours to the guide above and have him/her give you the backed up files. 44 | 45 | If you really don't have files available, I regret having to say this but your only hope is, most probably, a JTAG box. 46 | 47 | ## Additional Tools (for developers) 48 | 49 | * `scripts/getpartbin.py` - Python script for backing up the primary partition & extended partition tables and combines them into a 50 | writable parition0.bin file 51 | * `scripts/qdload.pl` - Perl script for talking in the HDLC framed DMSS & Streaming Protocols used by Qualcomm 52 | * `scripts/get-part.sh` - **UNFINISHED** script by darkspr1te for creating partition tables in sfdisk format and .csv format 53 | (to be used in the future to create partition0.bin plus more automated collection) 54 | * `scripts/get-partitions.sh` - Script for pulling the partition table from a **working** device 55 | * `scripts/backup.sh` - Script for pulling needed partitions from a **working** device 56 | * `binaries/` - Folder containing armv5 (armv7 compatible) tools for partition manipulation and data collection 57 | * `binaries/hex2bin` - convert your xxxxMPRG.hex file to bin for use with qdload 58 | * `qpst-drivers/` - Windows drivers (only included for convenience) 59 | 60 | ## Credits 61 | 62 | * [darkspr1te](https://github.com/mohammad92) for the original MSM8660 tool (`brixfix`) 63 | * E:V:A 64 | * SLS 65 | * JCSullins (RootzWiki) 66 | * Adam Outler 67 | -------------------------------------------------------------------------------- /adb/32-bit/LICENSE: -------------------------------------------------------------------------------- 1 | 2 | Copyright (c) 2006-2009, The Android Open Source Project 3 | Copyright 2006, Brian Swetland 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | 8 | Unless required by applicable law or agreed to in writing, software 9 | distributed under the License is distributed on an "AS IS" BASIS, 10 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11 | See the License for the specific language governing permissions and 12 | limitations under the License. 13 | 14 | 15 | Apache License 16 | Version 2.0, January 2004 17 | http://www.apache.org/licenses/ 18 | 19 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 20 | 21 | 1. Definitions. 22 | 23 | "License" shall mean the terms and conditions for use, reproduction, 24 | and distribution as defined by Sections 1 through 9 of this document. 25 | 26 | "Licensor" shall mean the copyright owner or entity authorized by 27 | the copyright owner that is granting the License. 28 | 29 | "Legal Entity" shall mean the union of the acting entity and all 30 | other entities that control, are controlled by, or are under common 31 | control with that entity. For the purposes of this definition, 32 | "control" means (i) the power, direct or indirect, to cause the 33 | direction or management of such entity, whether by contract or 34 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 35 | outstanding shares, or (iii) beneficial ownership of such entity. 36 | 37 | "You" (or "Your") shall mean an individual or Legal Entity 38 | exercising permissions granted by this License. 39 | 40 | "Source" form shall mean the preferred form for making modifications, 41 | including but not limited to software source code, documentation 42 | source, and configuration files. 43 | 44 | "Object" form shall mean any form resulting from mechanical 45 | transformation or translation of a Source form, including but 46 | not limited to compiled object code, generated documentation, 47 | and conversions to other media types. 48 | 49 | "Work" shall mean the work of authorship, whether in Source or 50 | Object form, made available under the License, as indicated by a 51 | copyright notice that is included in or attached to the work 52 | (an example is provided in the Appendix below). 53 | 54 | "Derivative Works" shall mean any work, whether in Source or Object 55 | form, that is based on (or derived from) the Work and for which the 56 | editorial revisions, annotations, elaborations, or other modifications 57 | represent, as a whole, an original work of authorship. For the purposes 58 | of this License, Derivative Works shall not include works that remain 59 | separable from, or merely link (or bind by name) to the interfaces of, 60 | the Work and Derivative Works thereof. 61 | 62 | "Contribution" shall mean any work of authorship, including 63 | the original version of the Work and any modifications or additions 64 | to that Work or Derivative Works thereof, that is intentionally 65 | submitted to Licensor for inclusion in the Work by the copyright owner 66 | or by an individual or Legal Entity authorized to submit on behalf of 67 | the copyright owner. For the purposes of this definition, "submitted" 68 | means any form of electronic, verbal, or written communication sent 69 | to the Licensor or its representatives, including but not limited to 70 | communication on electronic mailing lists, source code control systems, 71 | and issue tracking systems that are managed by, or on behalf of, the 72 | Licensor for the purpose of discussing and improving the Work, but 73 | excluding communication that is conspicuously marked or otherwise 74 | designated in writing by the copyright owner as "Not a Contribution." 75 | 76 | "Contributor" shall mean Licensor and any individual or Legal Entity 77 | on behalf of whom a Contribution has been received by Licensor and 78 | subsequently incorporated within the Work. 79 | 80 | 2. Grant of Copyright License. Subject to the terms and conditions of 81 | this License, each Contributor hereby grants to You a perpetual, 82 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 83 | copyright license to reproduce, prepare Derivative Works of, 84 | publicly display, publicly perform, sublicense, and distribute the 85 | Work and such Derivative Works in Source or Object form. 86 | 87 | 3. Grant of Patent License. Subject to the terms and conditions of 88 | this License, each Contributor hereby grants to You a perpetual, 89 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 90 | (except as stated in this section) patent license to make, have made, 91 | use, offer to sell, sell, import, and otherwise transfer the Work, 92 | where such license applies only to those patent claims licensable 93 | by such Contributor that are necessarily infringed by their 94 | Contribution(s) alone or by combination of their Contribution(s) 95 | with the Work to which such Contribution(s) was submitted. If You 96 | institute patent litigation against any entity (including a 97 | cross-claim or counterclaim in a lawsuit) alleging that the Work 98 | or a Contribution incorporated within the Work constitutes direct 99 | or contributory patent infringement, then any patent licenses 100 | granted to You under this License for that Work shall terminate 101 | as of the date such litigation is filed. 102 | 103 | 4. Redistribution. You may reproduce and distribute copies of the 104 | Work or Derivative Works thereof in any medium, with or without 105 | modifications, and in Source or Object form, provided that You 106 | meet the following conditions: 107 | 108 | (a) You must give any other recipients of the Work or 109 | Derivative Works a copy of this License; and 110 | 111 | (b) You must cause any modified files to carry prominent notices 112 | stating that You changed the files; and 113 | 114 | (c) You must retain, in the Source form of any Derivative Works 115 | that You distribute, all copyright, patent, trademark, and 116 | attribution notices from the Source form of the Work, 117 | excluding those notices that do not pertain to any part of 118 | the Derivative Works; and 119 | 120 | (d) If the Work includes a "NOTICE" text file as part of its 121 | distribution, then any Derivative Works that You distribute must 122 | include a readable copy of the attribution notices contained 123 | within such NOTICE file, excluding those notices that do not 124 | pertain to any part of the Derivative Works, in at least one 125 | of the following places: within a NOTICE text file distributed 126 | as part of the Derivative Works; within the Source form or 127 | documentation, if provided along with the Derivative Works; or, 128 | within a display generated by the Derivative Works, if and 129 | wherever such third-party notices normally appear. The contents 130 | of the NOTICE file are for informational purposes only and 131 | do not modify the License. You may add Your own attribution 132 | notices within Derivative Works that You distribute, alongside 133 | or as an addendum to the NOTICE text from the Work, provided 134 | that such additional attribution notices cannot be construed 135 | as modifying the License. 136 | 137 | You may add Your own copyright statement to Your modifications and 138 | may provide additional or different license terms and conditions 139 | for use, reproduction, or distribution of Your modifications, or 140 | for any such Derivative Works as a whole, provided Your use, 141 | reproduction, and distribution of the Work otherwise complies with 142 | the conditions stated in this License. 143 | 144 | 5. Submission of Contributions. Unless You explicitly state otherwise, 145 | any Contribution intentionally submitted for inclusion in the Work 146 | by You to the Licensor shall be under the terms and conditions of 147 | this License, without any additional terms or conditions. 148 | Notwithstanding the above, nothing herein shall supersede or modify 149 | the terms of any separate license agreement you may have executed 150 | with Licensor regarding such Contributions. 151 | 152 | 6. Trademarks. This License does not grant permission to use the trade 153 | names, trademarks, service marks, or product names of the Licensor, 154 | except as required for reasonable and customary use in describing the 155 | origin of the Work and reproducing the content of the NOTICE file. 156 | 157 | 7. Disclaimer of Warranty. Unless required by applicable law or 158 | agreed to in writing, Licensor provides the Work (and each 159 | Contributor provides its Contributions) on an "AS IS" BASIS, 160 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 161 | implied, including, without limitation, any warranties or conditions 162 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 163 | PARTICULAR PURPOSE. You are solely responsible for determining the 164 | appropriateness of using or redistributing the Work and assume any 165 | risks associated with Your exercise of permissions under this License. 166 | 167 | 8. Limitation of Liability. In no event and under no legal theory, 168 | whether in tort (including negligence), contract, or otherwise, 169 | unless required by applicable law (such as deliberate and grossly 170 | negligent acts) or agreed to in writing, shall any Contributor be 171 | liable to You for damages, including any direct, indirect, special, 172 | incidental, or consequential damages of any character arising as a 173 | result of this License or out of the use or inability to use the 174 | Work (including but not limited to damages for loss of goodwill, 175 | work stoppage, computer failure or malfunction, or any and all 176 | other commercial damages or losses), even if such Contributor 177 | has been advised of the possibility of such damages. 178 | 179 | 9. Accepting Warranty or Additional Liability. While redistributing 180 | the Work or Derivative Works thereof, You may choose to offer, 181 | and charge a fee for, acceptance of support, warranty, indemnity, 182 | or other liability obligations and/or rights consistent with this 183 | License. However, in accepting such obligations, You may act only 184 | on Your own behalf and on Your sole responsibility, not on behalf 185 | of any other Contributor, and only if You agree to indemnify, 186 | defend, and hold each Contributor harmless for any liability 187 | incurred by, or claims asserted against, such Contributor by reason 188 | of your accepting any such warranty or additional liability. 189 | 190 | END OF TERMS AND CONDITIONS 191 | 192 | -------------------------------------------------------------------------------- /adb/32-bit/README: -------------------------------------------------------------------------------- 1 | This is the Android Debug Bridge (ADB). It is made available under the terms 2 | of the Apache 2.0 License in LICENSE. Its source code is available 3 | at , and you can reproduce this package by building 4 | the Android SDK per the instructions at that site. 5 | -------------------------------------------------------------------------------- /adb/32-bit/adb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jareddantis/unbrick_8960/64804022a2daad2e741cb202257a6db558079453/adb/32-bit/adb -------------------------------------------------------------------------------- /adb/64-bit/LICENSE: -------------------------------------------------------------------------------- 1 | 2 | Copyright (c) 2006-2009, The Android Open Source Project 3 | Copyright 2006, Brian Swetland 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | 8 | Unless required by applicable law or agreed to in writing, software 9 | distributed under the License is distributed on an "AS IS" BASIS, 10 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11 | See the License for the specific language governing permissions and 12 | limitations under the License. 13 | 14 | 15 | Apache License 16 | Version 2.0, January 2004 17 | http://www.apache.org/licenses/ 18 | 19 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 20 | 21 | 1. Definitions. 22 | 23 | "License" shall mean the terms and conditions for use, reproduction, 24 | and distribution as defined by Sections 1 through 9 of this document. 25 | 26 | "Licensor" shall mean the copyright owner or entity authorized by 27 | the copyright owner that is granting the License. 28 | 29 | "Legal Entity" shall mean the union of the acting entity and all 30 | other entities that control, are controlled by, or are under common 31 | control with that entity. For the purposes of this definition, 32 | "control" means (i) the power, direct or indirect, to cause the 33 | direction or management of such entity, whether by contract or 34 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 35 | outstanding shares, or (iii) beneficial ownership of such entity. 36 | 37 | "You" (or "Your") shall mean an individual or Legal Entity 38 | exercising permissions granted by this License. 39 | 40 | "Source" form shall mean the preferred form for making modifications, 41 | including but not limited to software source code, documentation 42 | source, and configuration files. 43 | 44 | "Object" form shall mean any form resulting from mechanical 45 | transformation or translation of a Source form, including but 46 | not limited to compiled object code, generated documentation, 47 | and conversions to other media types. 48 | 49 | "Work" shall mean the work of authorship, whether in Source or 50 | Object form, made available under the License, as indicated by a 51 | copyright notice that is included in or attached to the work 52 | (an example is provided in the Appendix below). 53 | 54 | "Derivative Works" shall mean any work, whether in Source or Object 55 | form, that is based on (or derived from) the Work and for which the 56 | editorial revisions, annotations, elaborations, or other modifications 57 | represent, as a whole, an original work of authorship. For the purposes 58 | of this License, Derivative Works shall not include works that remain 59 | separable from, or merely link (or bind by name) to the interfaces of, 60 | the Work and Derivative Works thereof. 61 | 62 | "Contribution" shall mean any work of authorship, including 63 | the original version of the Work and any modifications or additions 64 | to that Work or Derivative Works thereof, that is intentionally 65 | submitted to Licensor for inclusion in the Work by the copyright owner 66 | or by an individual or Legal Entity authorized to submit on behalf of 67 | the copyright owner. For the purposes of this definition, "submitted" 68 | means any form of electronic, verbal, or written communication sent 69 | to the Licensor or its representatives, including but not limited to 70 | communication on electronic mailing lists, source code control systems, 71 | and issue tracking systems that are managed by, or on behalf of, the 72 | Licensor for the purpose of discussing and improving the Work, but 73 | excluding communication that is conspicuously marked or otherwise 74 | designated in writing by the copyright owner as "Not a Contribution." 75 | 76 | "Contributor" shall mean Licensor and any individual or Legal Entity 77 | on behalf of whom a Contribution has been received by Licensor and 78 | subsequently incorporated within the Work. 79 | 80 | 2. Grant of Copyright License. Subject to the terms and conditions of 81 | this License, each Contributor hereby grants to You a perpetual, 82 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 83 | copyright license to reproduce, prepare Derivative Works of, 84 | publicly display, publicly perform, sublicense, and distribute the 85 | Work and such Derivative Works in Source or Object form. 86 | 87 | 3. Grant of Patent License. Subject to the terms and conditions of 88 | this License, each Contributor hereby grants to You a perpetual, 89 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 90 | (except as stated in this section) patent license to make, have made, 91 | use, offer to sell, sell, import, and otherwise transfer the Work, 92 | where such license applies only to those patent claims licensable 93 | by such Contributor that are necessarily infringed by their 94 | Contribution(s) alone or by combination of their Contribution(s) 95 | with the Work to which such Contribution(s) was submitted. If You 96 | institute patent litigation against any entity (including a 97 | cross-claim or counterclaim in a lawsuit) alleging that the Work 98 | or a Contribution incorporated within the Work constitutes direct 99 | or contributory patent infringement, then any patent licenses 100 | granted to You under this License for that Work shall terminate 101 | as of the date such litigation is filed. 102 | 103 | 4. Redistribution. You may reproduce and distribute copies of the 104 | Work or Derivative Works thereof in any medium, with or without 105 | modifications, and in Source or Object form, provided that You 106 | meet the following conditions: 107 | 108 | (a) You must give any other recipients of the Work or 109 | Derivative Works a copy of this License; and 110 | 111 | (b) You must cause any modified files to carry prominent notices 112 | stating that You changed the files; and 113 | 114 | (c) You must retain, in the Source form of any Derivative Works 115 | that You distribute, all copyright, patent, trademark, and 116 | attribution notices from the Source form of the Work, 117 | excluding those notices that do not pertain to any part of 118 | the Derivative Works; and 119 | 120 | (d) If the Work includes a "NOTICE" text file as part of its 121 | distribution, then any Derivative Works that You distribute must 122 | include a readable copy of the attribution notices contained 123 | within such NOTICE file, excluding those notices that do not 124 | pertain to any part of the Derivative Works, in at least one 125 | of the following places: within a NOTICE text file distributed 126 | as part of the Derivative Works; within the Source form or 127 | documentation, if provided along with the Derivative Works; or, 128 | within a display generated by the Derivative Works, if and 129 | wherever such third-party notices normally appear. The contents 130 | of the NOTICE file are for informational purposes only and 131 | do not modify the License. You may add Your own attribution 132 | notices within Derivative Works that You distribute, alongside 133 | or as an addendum to the NOTICE text from the Work, provided 134 | that such additional attribution notices cannot be construed 135 | as modifying the License. 136 | 137 | You may add Your own copyright statement to Your modifications and 138 | may provide additional or different license terms and conditions 139 | for use, reproduction, or distribution of Your modifications, or 140 | for any such Derivative Works as a whole, provided Your use, 141 | reproduction, and distribution of the Work otherwise complies with 142 | the conditions stated in this License. 143 | 144 | 5. Submission of Contributions. Unless You explicitly state otherwise, 145 | any Contribution intentionally submitted for inclusion in the Work 146 | by You to the Licensor shall be under the terms and conditions of 147 | this License, without any additional terms or conditions. 148 | Notwithstanding the above, nothing herein shall supersede or modify 149 | the terms of any separate license agreement you may have executed 150 | with Licensor regarding such Contributions. 151 | 152 | 6. Trademarks. This License does not grant permission to use the trade 153 | names, trademarks, service marks, or product names of the Licensor, 154 | except as required for reasonable and customary use in describing the 155 | origin of the Work and reproducing the content of the NOTICE file. 156 | 157 | 7. Disclaimer of Warranty. Unless required by applicable law or 158 | agreed to in writing, Licensor provides the Work (and each 159 | Contributor provides its Contributions) on an "AS IS" BASIS, 160 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 161 | implied, including, without limitation, any warranties or conditions 162 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 163 | PARTICULAR PURPOSE. You are solely responsible for determining the 164 | appropriateness of using or redistributing the Work and assume any 165 | risks associated with Your exercise of permissions under this License. 166 | 167 | 8. Limitation of Liability. In no event and under no legal theory, 168 | whether in tort (including negligence), contract, or otherwise, 169 | unless required by applicable law (such as deliberate and grossly 170 | negligent acts) or agreed to in writing, shall any Contributor be 171 | liable to You for damages, including any direct, indirect, special, 172 | incidental, or consequential damages of any character arising as a 173 | result of this License or out of the use or inability to use the 174 | Work (including but not limited to damages for loss of goodwill, 175 | work stoppage, computer failure or malfunction, or any and all 176 | other commercial damages or losses), even if such Contributor 177 | has been advised of the possibility of such damages. 178 | 179 | 9. Accepting Warranty or Additional Liability. While redistributing 180 | the Work or Derivative Works thereof, You may choose to offer, 181 | and charge a fee for, acceptance of support, warranty, indemnity, 182 | or other liability obligations and/or rights consistent with this 183 | License. However, in accepting such obligations, You may act only 184 | on Your own behalf and on Your sole responsibility, not on behalf 185 | of any other Contributor, and only if You agree to indemnify, 186 | defend, and hold each Contributor harmless for any liability 187 | incurred by, or claims asserted against, such Contributor by reason 188 | of your accepting any such warranty or additional liability. 189 | 190 | END OF TERMS AND CONDITIONS 191 | 192 | -------------------------------------------------------------------------------- /adb/64-bit/README: -------------------------------------------------------------------------------- 1 | This is the Android Debug Bridge (ADB). It is made available under the terms 2 | of the Apache 2.0 License in LICENSE. Its source code is available originally 3 | at , although this version was built from source 4 | code available at ; 5 | and you can reproduce this package via the following instructions 6 | (for Ubuntu 13.04 Raring): 7 | 8 | 1. sudo apt-get build-dep android-tools-adb 9 | 2. apt-get source android-tools-adb 10 | 3. cd android-tools-4.2.2+git20130218/ 11 | 12 | 4. Apply this patch to debian/makefiles/adb.mk (to link libcrypto statically, 13 | so the executable works on Linux installations with different versions of it): 14 | 15 | --- debian/makefiles/adb.mk 2013-03-26 14:15:41.000000000 -0700 16 | +++ adb-static-crypto.mk 2013-06-06 16:51:52.794521267 -0700 17 | @@ -40,15 +40,16 @@ 18 | CPPFLAGS+= -I. 19 | CPPFLAGS+= -I../include 20 | CPPFLAGS+= -I../../../external/zlib 21 | +CPPFLAGS+= -I/usr/include/openssl 22 | 23 | -LIBS+= -lc -lpthread -lz -lcrypto 24 | +LIBS+= -lc -lpthread -lz -ldl 25 | 26 | OBJS= $(SRCS:.c=.o) 27 | 28 | all: adb 29 | 30 | adb: $(OBJS) 31 | - $(CC) -o $@ $(LDFLAGS) $(OBJS) $(LIBS) 32 | + $(CC) -o $@ $(LDFLAGS) $(OBJS) /usr/lib/x86_64-linux-gnu/libcrypto.a $(LIBS) 33 | 34 | clean: 35 | rm -rf $(OBJS) adb 36 | 37 | 5. cd core/adb && make -f ../../debian/makefiles/adb.mk 38 | -------------------------------------------------------------------------------- /adb/64-bit/adb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jareddantis/unbrick_8960/64804022a2daad2e741cb202257a6db558079453/adb/64-bit/adb -------------------------------------------------------------------------------- /basefix.sh: -------------------------------------------------------------------------------- 1 | # SHV-E160L 'baseband unknown' repair file 2 | # Only possible with the help of XDA forum members, Mostly E:V:A for the Baseband fix, he reminded me that I have two 3 | # chains of trust in this SoC based device, one for the AP (application Processor) and one for the CP (Communication Processor) 4 | # Tested Only ON SHV-E160L device but may work for other Qualcomm devices, replace the loaders with the correct ones for you device 5 | # Samsung partition only, HTC has differing partition information 6 | # see brixfix.sh for more info 7 | # there are many reasons why you may have the baseband unknown failure, this fix is for a particular error on my SHV-E160L 8 | # that i have tried to document on 9 | # http://forum.xda-developers.com/showthread.php?t=1914359 10 | # please be aware of the dangers beefore using this file 11 | # if you have your own recovery option installed and it supports ADB the you dont need to install the included recovery option 12 | # *#06# does not seem to work in this device 13 | # see shv-e160l-dial-codes.txt for alternatives 14 | # included are ODIN recovery flash, Recovery mode flash update, dialer code, boot chain, adb for linux & windows 15 | # please make sure you have all the other required files. 16 | 17 | # WARNINGS 18 | # This script can brick a device beyond software access repair, JTAG would be required or you need to find the EMMCBOOT resistor and short the low 19 | # side to ground 20 | 21 | mkdir backup 22 | 23 | # for windows use md backup 24 | # md backup 25 | 26 | #back-up script 27 | echo "Backing up Bootloaders" 28 | echo 29 | echo " if any of the following fail with errors do no reboot your device, correct the error and re-execute" 30 | echo 31 | adb shell dd if=/dev/block/mmcblk0p2 of=/sdcard/sbl1.mbn bs=512 32 | adb pull /sdcard/sbl1.mbn backup/sbl1.mbn 33 | adb shell dd if=/dev/block/mmcblk0p3 of=/sdcard/sbl2.mbn bs=512 34 | adb pull /sdcard/sbl2.mbn backup/sbl2.mbn 35 | adb shell dd if=/dev/block/mmcblk0p5 of=/sdcard/rpm.mbn bs=512 36 | adb pull /sdcard/rpm.mbn backup/rpm.mbn 37 | adb shell dd if=/dev/block/mmcblk0p6 of=/sdcard/sbl3.mbn bs=512 38 | adb pull /sdcard/sbl3.mbn backup/sbl3.mbn 39 | adb shell dd if=/dev/block/mmcblk0p7 of=/sdcard/aboot.mbn bs=512 40 | adb pull /sdcard/aboot.mbn backup/aboot.mbn 41 | adb shell dd if=/dev/block/mmcblk0p9 of=/sdcard/tz.mbn bs=512 42 | adb pull /sdcard/sbl1.mbn backup/tz.mbn 43 | 44 | #push bootloaders to device 45 | echo "Copying bootloaders to device - /sdcard/" 46 | echo 47 | echo 48 | adb push SHV-E160L/sbl1.mbn /sdcard/sbl1.mbn 49 | adb push SHV-E160L/sbl2.mbn /sdcard/sbl2.mbn 50 | adb push SHV-E160L/rpm.mbn /sdcard/rpm.mbn 51 | adb push SHV-E160L/sbl3.mbn /sdcard/sbl3.mbn 52 | # dont restore aboot.mbn but it's listed here for completeness 53 | # adb push SHV-E160L/aboot.mbn /sdcard/aboot.mbn 54 | adb push SHV-E160L/tz.mbn /sdcard/tz.mbn 55 | 56 | # exit here if user not removed the exit code, user must read and understand documentation 57 | # remove the following exit line after you confirmed the above has work without error 58 | 59 | #exit 60 | 61 | #restore 62 | echo 63 | echo "Copying Bootloaders to MMC" 64 | echo " Restoring Chain of trust" 65 | adb shell dd if=/sdcard/sbl1.mbn of=/dev/block/mmcblk0p2 bs=512 66 | adb shell dd if=/sdcard/sbl2.mbn of=/dev/block/mmcblk0p3 bs=512 67 | adb shell dd if=/sdcard/rpm.mbn of=/dev/block/mmcblk0p5 bs=512 68 | adb shell dd if=/sdcard/sbl3.mbn of=/dev/block/mmcblk0p6 bs=512 69 | # dont restore aboot.mbn but it's listed here for completeness 70 | # adb shell dd if=/sdcard/aboot.mbn of=/dev/block/mmcblk0p7 bs=512 71 | adb shell dd if=/sdcard/tz.mbn of=/dev/block/mmcblk0p9 bs=512 72 | 73 | echo 74 | echo "Restore complete, " 75 | echo "if any error occurs please resolve the error and re-execute this script, dont reboot the phone or you could " 76 | echo "end with a bootloop or worse a hang before aboot.mbn (little kernel/download mode loader) is executed and odin mode is activated" 77 | echo "the hang will require JTAG or a hardware mod to reactivate QDload mode, you will then need to run brixfix.sh " 78 | 79 | -------------------------------------------------------------------------------- /binaries/blkid: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jareddantis/unbrick_8960/64804022a2daad2e741cb202257a6db558079453/binaries/blkid -------------------------------------------------------------------------------- /binaries/fdisk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jareddantis/unbrick_8960/64804022a2daad2e741cb202257a6db558079453/binaries/fdisk -------------------------------------------------------------------------------- /binaries/gdisk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jareddantis/unbrick_8960/64804022a2daad2e741cb202257a6db558079453/binaries/gdisk -------------------------------------------------------------------------------- /binaries/hex2bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jareddantis/unbrick_8960/64804022a2daad2e741cb202257a6db558079453/binaries/hex2bin -------------------------------------------------------------------------------- /binaries/lsblk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jareddantis/unbrick_8960/64804022a2daad2e741cb202257a6db558079453/binaries/lsblk -------------------------------------------------------------------------------- /binaries/parted: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jareddantis/unbrick_8960/64804022a2daad2e741cb202257a6db558079453/binaries/parted -------------------------------------------------------------------------------- /binaries/partx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jareddantis/unbrick_8960/64804022a2daad2e741cb202257a6db558079453/binaries/partx -------------------------------------------------------------------------------- /binaries/sfdisk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jareddantis/unbrick_8960/64804022a2daad2e741cb202257a6db558079453/binaries/sfdisk -------------------------------------------------------------------------------- /binaries/sgdisk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jareddantis/unbrick_8960/64804022a2daad2e741cb202257a6db558079453/binaries/sgdisk -------------------------------------------------------------------------------- /devices/GT-I8730/GT-I8730-msm8960-partition.csv: -------------------------------------------------------------------------------- 1 | 2 | /dev/block/mmcblk0p1,1,204800,92,HLOS-BIN 3 | /dev/block/mmcblk0p2,204801,1000,4d,SBL1,bootable 4 | /dev/block/mmcblk0p3,205801,3000,51,SBL2 5 | /dev/block/mmcblk0p4,208801,30568543,5,EXT 6 | /dev/block/mmcblk0p5,212992,1000,47,RPM 7 | /dev/block/mmcblk0p6,221184,4096,45,SBL3 8 | /dev/block/mmcblk0p7,229376,5000,4c,ABOOT 9 | /dev/block/mmcblk0p8,237568,20480,48,BOOT 10 | /dev/block/mmcblk0p9,262144,1000,46,TZ 11 | /dev/block/mmcblk0p10,270336,1000,5d,SSD 12 | /dev/block/mmcblk0p11,278528,1000,91,PIT 13 | /dev/block/mmcblk0p12,286720,20480,93,PARAM 14 | /dev/block/mmcblk0p13,311296,200704,c,MODEM 15 | /dev/block/mmcblk0p14,516096,6144,4a,MSM_ST1 16 | /dev/block/mmcblk0p15,524288,6144,4b,MSM_ST2 17 | /dev/block/mmcblk0p16,532480,6144,58,MSM_FSG 18 | /dev/block/mmcblk0p17,540672,200704,8f,MDM 19 | /dev/block/mmcblk0p18,745472,6144,59,M9K_EFS1 20 | /dev/block/mmcblk0p19,753664,6144,5a,M9K_EFS2 21 | /dev/block/mmcblk0p20,761856,6144,5b,M9K_FSG 22 | /dev/block/mmcblk0p21,770048,20480,ab,DEVENC 23 | /dev/block/mmcblk0p22,794624,20480,60,RECOVERY 24 | /dev/block/mmcblk0p23,819200,20480,94,FOTA 25 | /dev/block/mmcblk0p24,843776,3067904,a5,SYSTEM 26 | /dev/block/mmcblk0p25,3915776,4198400,a6,USERDATA 27 | /dev/block/mmcblk0p26,8118272,618496,a8,CACHE 28 | /dev/block/mmcblk0p27,8740864,264192,a9,TOMBSTONES 29 | /dev/block/mmcblk0p28,9011200,1024000,95,HIDDEN 30 | /dev/block/mmcblk0p29,10035200,20742144,90,UMS 31 | -------------------------------------------------------------------------------- /devices/GT-I8730/aboot.mbn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jareddantis/unbrick_8960/64804022a2daad2e741cb202257a6db558079453/devices/GT-I8730/aboot.mbn -------------------------------------------------------------------------------- /devices/GT-I8730/pitfile.pit: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jareddantis/unbrick_8960/64804022a2daad2e741cb202257a6db558079453/devices/GT-I8730/pitfile.pit -------------------------------------------------------------------------------- /devices/GT-I8730/rpm.mbn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jareddantis/unbrick_8960/64804022a2daad2e741cb202257a6db558079453/devices/GT-I8730/rpm.mbn -------------------------------------------------------------------------------- /devices/GT-I8730/sbl1.mbn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jareddantis/unbrick_8960/64804022a2daad2e741cb202257a6db558079453/devices/GT-I8730/sbl1.mbn -------------------------------------------------------------------------------- /devices/GT-I8730/sbl2.mbn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jareddantis/unbrick_8960/64804022a2daad2e741cb202257a6db558079453/devices/GT-I8730/sbl2.mbn -------------------------------------------------------------------------------- /devices/GT-I8730/sbl3.mbn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jareddantis/unbrick_8960/64804022a2daad2e741cb202257a6db558079453/devices/GT-I8730/sbl3.mbn -------------------------------------------------------------------------------- /devices/GT-I8730/tz.mbn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jareddantis/unbrick_8960/64804022a2daad2e741cb202257a6db558079453/devices/GT-I8730/tz.mbn -------------------------------------------------------------------------------- /devices/SCH-I535/aboot.mbn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jareddantis/unbrick_8960/64804022a2daad2e741cb202257a6db558079453/devices/SCH-I535/aboot.mbn -------------------------------------------------------------------------------- /devices/SCH-I535/pitfile.pit: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jareddantis/unbrick_8960/64804022a2daad2e741cb202257a6db558079453/devices/SCH-I535/pitfile.pit -------------------------------------------------------------------------------- /devices/SCH-I535/rpm.mbn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jareddantis/unbrick_8960/64804022a2daad2e741cb202257a6db558079453/devices/SCH-I535/rpm.mbn -------------------------------------------------------------------------------- /devices/SCH-I535/sbl1.mbn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jareddantis/unbrick_8960/64804022a2daad2e741cb202257a6db558079453/devices/SCH-I535/sbl1.mbn -------------------------------------------------------------------------------- /devices/SCH-I535/sbl2.mbn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jareddantis/unbrick_8960/64804022a2daad2e741cb202257a6db558079453/devices/SCH-I535/sbl2.mbn -------------------------------------------------------------------------------- /devices/SCH-I535/sbl3.mbn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jareddantis/unbrick_8960/64804022a2daad2e741cb202257a6db558079453/devices/SCH-I535/sbl3.mbn -------------------------------------------------------------------------------- /devices/SCH-I535/tz.mbn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jareddantis/unbrick_8960/64804022a2daad2e741cb202257a6db558079453/devices/SCH-I535/tz.mbn -------------------------------------------------------------------------------- /hexmbn/chips/apq8064/8064_msimage.mbn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jareddantis/unbrick_8960/64804022a2daad2e741cb202257a6db558079453/hexmbn/chips/apq8064/8064_msimage.mbn -------------------------------------------------------------------------------- /hexmbn/chips/msm8930/8930_msimage.mbn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jareddantis/unbrick_8960/64804022a2daad2e741cb202257a6db558079453/hexmbn/chips/msm8930/8930_msimage.mbn -------------------------------------------------------------------------------- /hexmbn/chips/msm8960/8960_msimage.mbn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jareddantis/unbrick_8960/64804022a2daad2e741cb202257a6db558079453/hexmbn/chips/msm8960/8960_msimage.mbn -------------------------------------------------------------------------------- /qpst-drivers/amd64/qcCoInstaller.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jareddantis/unbrick_8960/64804022a2daad2e741cb202257a6db558079453/qpst-drivers/amd64/qcCoInstaller.dll -------------------------------------------------------------------------------- /qpst-drivers/amd64/qcser.inf: -------------------------------------------------------------------------------- 1 | ; Windows Vista Virtual Serial Port Setup File 2 | ; Copyright (c) 2010 Qualcomm Incorporated 3 | ; Manufacturer: Qualcomm Incorporated 4 | ; 5 | 6 | [Version] 7 | signature = "$WINDOWS NT$" 8 | Class = Ports 9 | Provider = %QUALCOMM% 10 | ClassGuid = {4D36E978-E325-11CE-BFC1-08002BE10318} 11 | DriverVer = 09/26/2011,2.0.8.8 12 | Catalogfile= qcusbser.cat 13 | 14 | [ControlFlags] 15 | ExcludeFromSelect = * 16 | 17 | [Manufacturer] 18 | %QUALCOMM% = QcomSerialPort, NTia64, NTamd64 19 | 20 | [SourceDisksNames] 21 | 1000 = %QcomSrcDisk%,"",, 22 | 23 | [SourceDisksFiles] 24 | qcusbser.sys = 1000 25 | qcCoInstaller.dll = 1000 26 | 27 | [QcomSerialPort] 28 | %QcomDevice00% = QportInstall00, USB\VID_05C6&PID_3197&MI_01 29 | %QcomDevice6k% = QportInstall00, USB\VID_05C6&PID_6000&MI_01 30 | %QcomDeviceNMEA% = QportInstall00, USB\VID_05C6&PID_6000&MI_02 31 | %QcomDevice7k% = QportInstall00, USB\VID_05C6&PID_7000&MI_01 32 | %QcomDevice7k1% = QportInstall00, USB\VID_05C6&PID_7001&MI_00 33 | %QcomDevice7k3% = QportInstall00, USB\VID_05C6&PID_7001&MI_03 34 | %QcomDevice70020% = QportInstall00, USB\VID_05C6&PID_7002&MI_00 35 | %QcomDevice70023% = QportInstall00, USB\VID_05C6&PID_7002&MI_03 36 | %QcomDevice70024% = QportInstall00, USB\VID_05C6&PID_7002&MI_04 37 | %QcomDevice71010% = QportInstall00, USB\VID_05C6&PID_7101&MI_00 38 | %QcomDevice71015% = QportInstall00, USB\VID_05C6&PID_7101&MI_05 39 | %QcomDevice71020% = QportInstall00, USB\VID_05C6&PID_7102&MI_00 40 | %QcomDevice71025% = QportInstall00, USB\VID_05C6&PID_7102&MI_05 41 | %QcomDevice71026% = QportInstall00, USB\VID_05C6&PID_7102&MI_06 42 | %QcomDevice80000% = QportInstall00, USB\VID_05C6&PID_8000&MI_00 43 | %QcomDevice80002% = QportInstall00, USB\VID_05C6&PID_8000&MI_02 44 | %QcomDevice80010% = QportInstall00, USB\VID_05C6&PID_8001&MI_00 45 | %QcomDevice80012% = QportInstall00, USB\VID_05C6&PID_8001&MI_02 46 | %QcomDevice80020% = QportInstall00, USB\VID_05C6&PID_8002&MI_00 47 | %QcomDevice80022% = QportInstall00, USB\VID_05C6&PID_8002&MI_02 48 | %QcomDevice90080% = QportInstall00, USB\VID_05C6&PID_9008 49 | %QcomDevice90000% = QportInstall00, USB\VID_05C6&PID_9000&MI_00 50 | %QcomDevice90001% = QportInstall00, USB\VID_05C6&PID_9000&MI_01 51 | %QcomDevice90010% = QportInstall00, USB\VID_05C6&PID_9001&MI_00 52 | %QcomDevice90011% = QportInstall00, USB\VID_05C6&PID_9001&MI_01 53 | %QcomDevice90020% = QportInstall00, USB\VID_05C6&PID_9002&MI_00 54 | %QcomDevice90021% = QportInstall00, USB\VID_05C6&PID_9002&MI_01 55 | %QcomDevice90030% = QportInstall00, USB\VID_05C6&PID_9003&MI_00 56 | %QcomDevice90031% = QportInstall00, USB\VID_05C6&PID_9003&MI_01 57 | %QcomDevice90032% = QportInstall00, USB\VID_05C6&PID_9003&MI_02 58 | %QcomDevice32001% = QportInstall00, USB\VID_05C6&PID_3200&MI_01 59 | %QcomDevice32002% = QportInstall00, USB\VID_05C6&PID_3200&MI_02 60 | %QcomDevice90040% = QportInstall00, USB\VID_05C6&PID_9004&MI_00 61 | %QcomDevice90050% = QportInstall00, USB\VID_05C6&PID_9005&MI_00 62 | %QcomDevice90060% = QportInstall00, USB\VID_05C6&PID_9006&MI_00 63 | %QcomDevice900A0% = QportInstall00, USB\VID_05C6&PID_900A&MI_00 64 | %QcomDevice900A1% = QportInstall00, USB\VID_05C6&PID_900A&MI_01 65 | %QcomDevice900B0% = QportInstall00, USB\VID_05C6&PID_900B&MI_00 66 | %QcomDevice900C0% = QportInstall00, USB\VID_05C6&PID_900C&MI_00 67 | %QcomDevice900C1% = QportInstall00, USB\VID_05C6&PID_900C&MI_01 68 | %QcomDevice900D0% = QportInstall00, USB\VID_05C6&PID_900D&MI_00 69 | %QcomDevice900D1% = QportInstall00, USB\VID_05C6&PID_900D&MI_01 70 | %QcomDevice900E0% = QportInstall00, USB\VID_05C6&PID_900E 71 | %QcomDevice900F0% = QportInstall00, USB\VID_05C6&PID_900F&MI_00 72 | %QcomDevice900F1% = QportInstall00, USB\VID_05C6&PID_900F&MI_01 73 | %QcomDevice90100% = QportInstall00, USB\VID_05C6&PID_9010&MI_00 74 | %QcomDevice90101% = QportInstall00, USB\VID_05C6&PID_9010&MI_01 75 | %QcomDevice90110% = QportInstall00, USB\VID_05C6&PID_9011&MI_00 76 | %QcomDevice90111% = QportInstall00, USB\VID_05C6&PID_9011&MI_01 77 | %QcomDevice90120% = QportInstall00, USB\VID_05C6&PID_9012&MI_00 78 | %QcomDevice90130% = QportInstall00, USB\VID_05C6&PID_9013&MI_00 79 | %QcomDevice90160% = QportInstall00, USB\VID_05C6&PID_9016&MI_00 80 | %QcomDevice90162% = QportInstall00, USB\VID_05C6&PID_9016&MI_02 81 | %QcomDevice90170% = QportInstall00, USB\VID_05C6&PID_9017&MI_00 82 | %QcomDevice90172% = QportInstall00, USB\VID_05C6&PID_9017&MI_02 83 | %QcomDevice90180% = QportInstall00, USB\VID_05C6&PID_9018&MI_00 84 | %QcomDevice90183% = QportInstall00, USB\VID_05C6&PID_9018&MI_03 85 | %QcomDevice90191% = QportInstall00, USB\VID_05C6&PID_9019&MI_01 86 | %QcomDevice90192% = QportInstall00, USB\VID_05C6&PID_9019&MI_02 87 | %QcomDevice901B1% = QportInstall00, USB\VID_05C6&PID_901B&MI_01 88 | %QcomDevice901C0% = QportInstall00, USB\VID_05C6&PID_901C&MI_00 89 | %QcomDevice90200% = QportInstall00, USB\VID_05C6&PID_9020&MI_00 90 | %QcomDevice90203% = QportInstall00, USB\VID_05C6&PID_9020&MI_03 91 | %QcomDevice90210% = QportInstall00, USB\VID_05C6&PID_9021&MI_00 92 | %QcomDevice90220% = QportInstall00, USB\VID_05C6&PID_9022&MI_00 93 | %QcomDevice901D0% = QportInstall00, USB\VID_05C6&PID_901D&MI_00 94 | %QcomDevice901F0% = QportInstall00, USB\VID_05C6&PID_901F&MI_00 95 | %QcomDevice90250% = QportInstall00, USB\VID_05C6&PID_9025&MI_00 96 | ;%QcomDevice90253% = QportInstall00, USB\VID_05C6&PID_9025&MI_03 97 | %QcomDevice90260% = QportInstall00, USB\VID_05C6&PID_9026&MI_00 98 | ;%QcomDevice90262% = QportInstall00, USB\VID_05C6&PID_9026&MI_02 99 | %QcomDevice90280% = QportInstall00, USB\VID_05C6&PID_9028&MI_00 100 | %QcomDevice90281% = QportInstall00, USB\VID_05C6&PID_9028&MI_01 101 | %QcomDevice90290% = QportInstall00, USB\VID_05C6&PID_9029&MI_00 102 | %QcomDevice90292% = QportInstall00, USB\VID_05C6&PID_9029&MI_02 103 | %QcomDevice902C2% = QportInstall00, USB\VID_05C6&PID_902C&MI_02 104 | %QcomDevice902D2% = QportInstall00, USB\VID_05C6&PID_902D&MI_02 105 | %QcomDevice902E2% = QportInstall00, USB\VID_05C6&PID_902E&MI_02 106 | %QcomDevice902E4% = QportInstall00, USB\VID_05C6&PID_902E&MI_04 107 | %QcomDevice902F2% = QportInstall00, USB\VID_05C6&PID_902F&MI_02 108 | %QcomDevice90303% = QportInstall00, USB\VID_05C6&PID_9030&MI_03 109 | %QcomDevice90310% = QportInstall00, USB\VID_05C6&PID_9031&MI_00 110 | %QcomDevice90311% = QportInstall00, USB\VID_05C6&PID_9031&MI_01 111 | %QcomDevice90314% = QportInstall00, USB\VID_05C6&PID_9031&MI_04 112 | %QcomDevice90320% = QportInstall00, USB\VID_05C6&PID_9032&MI_00 113 | %QcomDevice90321% = QportInstall00, USB\VID_05C6&PID_9032&MI_01 114 | %QcomDevice90323% = QportInstall00, USB\VID_05C6&PID_9032&MI_03 115 | %QcomDevice90330% = QportInstall00, USB\VID_05C6&PID_9033&MI_00 116 | %QcomDevice90331% = QportInstall00, USB\VID_05C6&PID_9033&MI_01 117 | %QcomDevice90340% = QportInstall00, USB\VID_05C6&PID_9034&MI_00 118 | %QcomDevice90341% = QportInstall00, USB\VID_05C6&PID_9034&MI_01 119 | %QcomDevice90350% = QportInstall00, USB\VID_05C6&PID_9035&MI_00 120 | %QcomDevice90351% = QportInstall00, USB\VID_05C6&PID_9035&MI_01 121 | %QcomDevice90360% = QportInstall00, USB\VID_05C6&PID_9036&MI_00 122 | %QcomDevice90361% = QportInstall00, USB\VID_05C6&PID_9036&MI_01 123 | %QcomDevice90370% = QportInstall00, USB\VID_05C6&PID_9037&MI_00 124 | %QcomDevice90371% = QportInstall00, USB\VID_05C6&PID_9037&MI_01 125 | %QcomDevice90380% = QportInstall00, USB\VID_05C6&PID_9038&MI_00 126 | %QcomDevice90381% = QportInstall00, USB\VID_05C6&PID_9038&MI_01 127 | %QcomDevice903A1% = QportInstall00, USB\VID_05C6&PID_903A&MI_01 128 | %QcomDevice903B0% = QportInstall00, USB\VID_05C6&PID_903B&MI_00 129 | %QcomDevice903B1% = QportInstall00, USB\VID_05C6&PID_903B&MI_01 130 | %QcomDevice903C0% = QportInstall00, USB\VID_05C6&PID_903C&MI_00 131 | %QcomDevice903C1% = QportInstall00, USB\VID_05C6&PID_903C&MI_01 132 | %QcomDevice903D0% = QportInstall00, USB\VID_05C6&PID_903D&MI_00 133 | %QcomDevice903E0% = QportInstall00, USB\VID_05C6&PID_903E&MI_00 134 | %QcomDevice903F1% = QportInstall00, USB\VID_05C6&PID_903F&MI_01 135 | %QcomDevice903F2% = QportInstall00, USB\VID_05C6&PID_903F&MI_02 136 | %QcomDevice90401% = QportInstall00, USB\VID_05C6&PID_9040&MI_01 137 | %QcomDevice90402% = QportInstall00, USB\VID_05C6&PID_9040&MI_02 138 | %QcomDevice90412% = QportInstall00, USB\VID_05C6&PID_9041&MI_02 139 | %QcomDevice90413% = QportInstall00, USB\VID_05C6&PID_9041&MI_03 140 | %QcomDevice90422% = QportInstall00, USB\VID_05C6&PID_9042&MI_02 141 | %QcomDevice90423% = QportInstall00, USB\VID_05C6&PID_9042&MI_03 142 | %QcomDevice90430% = QportInstall00, USB\VID_05C6&PID_9043&MI_00 143 | %QcomDevice90431% = QportInstall00, USB\VID_05C6&PID_9043&MI_01 144 | %QcomDevice90440% = QportInstall00, USB\VID_05C6&PID_9044&MI_00 145 | %QcomDevice90441% = QportInstall00, USB\VID_05C6&PID_9044&MI_01 146 | %QcomDevice90450% = QportInstall00, USB\VID_05C6&PID_9045&MI_00 147 | %QcomDevice90451% = QportInstall00, USB\VID_05C6&PID_9045&MI_01 148 | %QcomDevice91000% = QportInstall00, USB\VID_05C6&PID_9100&MI_00 149 | %QcomDevice91001% = QportInstall00, USB\VID_05C6&PID_9100&MI_01 150 | %QcomDevice91010% = QportInstall00, USB\VID_05C6&PID_9101&MI_00 151 | %QcomDevice91011% = QportInstall00, USB\VID_05C6&PID_9101&MI_01 152 | %QcomDevice91012% = QportInstall00, USB\VID_05C6&PID_9101&MI_02 153 | %QcomDevice91014% = QportInstall00, USB\VID_05C6&PID_9101&MI_04 154 | %QcomDevice91015% = QportInstall00, USB\VID_05C6&PID_9101&MI_05 155 | %QcomDevice94020% = QportInstall00, USB\VID_05C6&PID_9402&MI_00 156 | %QcomDevice94021% = QportInstall00, USB\VID_05C6&PID_9402&MI_01 157 | %QcomDevice94040% = QportInstall00, USB\VID_05C6&PID_9404&MI_00 158 | %QcomDevice94041% = QportInstall00, USB\VID_05C6&PID_9404&MI_01 159 | %QcomDeviceF0051% = QportInstall00, USB\VID_05C6&PID_F005&MI_01 160 | %QcomDevice31991% = QportInstall00, USB\VID_05C6&PID_3199&MI_01 161 | %QcomDevice31992% = QportInstall00, USB\VID_05C6&PID_3199&MI_02 162 | %QcomDevice31993% = QportInstall00, USB\VID_05C6&PID_3199&MI_03 163 | %QcomDevice319A1% = QportInstall00, USB\VID_05C6&PID_319A&MI_01 164 | %QcomDevice319A2% = QportInstall00, USB\VID_05C6&PID_319A&MI_02 165 | %QcomDevice319A3% = QportInstall00, USB\VID_05C6&PID_319A&MI_03 166 | %QcomDevice319B0% = QportInstall00, USB\VID_05C6&PID_319B&MI_00 167 | %QcomDevice319B2% = QportInstall00, USB\VID_05C6&PID_319B&MI_02 168 | %QcomDevice319B3% = QportInstall00, USB\VID_05C6&PID_319B&MI_03 169 | %QcomDeviceF00D% = QportInstall00, USB\VID_05C6&PID_F00D 170 | 171 | [QcomSerialPort.NTia64] 172 | %QcomDevice00% = QportInstall00, USB\VID_05C6&PID_3197&MI_01 173 | %QcomDevice6k% = QportInstall00, USB\VID_05C6&PID_6000&MI_01 174 | %QcomDeviceNMEA% = QportInstall00, USB\VID_05C6&PID_6000&MI_02 175 | %QcomDevice7k% = QportInstall00, USB\VID_05C6&PID_7000&MI_01 176 | %QcomDevice7k1% = QportInstall00, USB\VID_05C6&PID_7001&MI_00 177 | %QcomDevice7k3% = QportInstall00, USB\VID_05C6&PID_7001&MI_03 178 | %QcomDevice70020% = QportInstall00, USB\VID_05C6&PID_7002&MI_00 179 | %QcomDevice70023% = QportInstall00, USB\VID_05C6&PID_7002&MI_03 180 | %QcomDevice70024% = QportInstall00, USB\VID_05C6&PID_7002&MI_04 181 | %QcomDevice71010% = QportInstall00, USB\VID_05C6&PID_7101&MI_00 182 | %QcomDevice71015% = QportInstall00, USB\VID_05C6&PID_7101&MI_05 183 | %QcomDevice71020% = QportInstall00, USB\VID_05C6&PID_7102&MI_00 184 | %QcomDevice71025% = QportInstall00, USB\VID_05C6&PID_7102&MI_05 185 | %QcomDevice71026% = QportInstall00, USB\VID_05C6&PID_7102&MI_06 186 | %QcomDevice80000% = QportInstall00, USB\VID_05C6&PID_8000&MI_00 187 | %QcomDevice80002% = QportInstall00, USB\VID_05C6&PID_8000&MI_02 188 | %QcomDevice80010% = QportInstall00, USB\VID_05C6&PID_8001&MI_00 189 | %QcomDevice80012% = QportInstall00, USB\VID_05C6&PID_8001&MI_02 190 | %QcomDevice80020% = QportInstall00, USB\VID_05C6&PID_8002&MI_00 191 | %QcomDevice80022% = QportInstall00, USB\VID_05C6&PID_8002&MI_02 192 | %QcomDevice90080% = QportInstall00, USB\VID_05C6&PID_9008 193 | %QcomDevice90000% = QportInstall00, USB\VID_05C6&PID_9000&MI_00 194 | %QcomDevice90001% = QportInstall00, USB\VID_05C6&PID_9000&MI_01 195 | %QcomDevice90010% = QportInstall00, USB\VID_05C6&PID_9001&MI_00 196 | %QcomDevice90011% = QportInstall00, USB\VID_05C6&PID_9001&MI_01 197 | %QcomDevice90020% = QportInstall00, USB\VID_05C6&PID_9002&MI_00 198 | %QcomDevice90021% = QportInstall00, USB\VID_05C6&PID_9002&MI_01 199 | %QcomDevice90030% = QportInstall00, USB\VID_05C6&PID_9003&MI_00 200 | %QcomDevice90031% = QportInstall00, USB\VID_05C6&PID_9003&MI_01 201 | %QcomDevice90032% = QportInstall00, USB\VID_05C6&PID_9003&MI_02 202 | %QcomDevice32001% = QportInstall00, USB\VID_05C6&PID_3200&MI_01 203 | %QcomDevice32002% = QportInstall00, USB\VID_05C6&PID_3200&MI_02 204 | %QcomDevice90040% = QportInstall00, USB\VID_05C6&PID_9004&MI_00 205 | %QcomDevice90050% = QportInstall00, USB\VID_05C6&PID_9005&MI_00 206 | %QcomDevice90060% = QportInstall00, USB\VID_05C6&PID_9006&MI_00 207 | %QcomDevice900A0% = QportInstall00, USB\VID_05C6&PID_900A&MI_00 208 | %QcomDevice900A1% = QportInstall00, USB\VID_05C6&PID_900A&MI_01 209 | %QcomDevice900B0% = QportInstall00, USB\VID_05C6&PID_900B&MI_00 210 | %QcomDevice900C0% = QportInstall00, USB\VID_05C6&PID_900C&MI_00 211 | %QcomDevice900C1% = QportInstall00, USB\VID_05C6&PID_900C&MI_01 212 | %QcomDevice900D0% = QportInstall00, USB\VID_05C6&PID_900D&MI_00 213 | %QcomDevice900D1% = QportInstall00, USB\VID_05C6&PID_900D&MI_01 214 | %QcomDevice900E0% = QportInstall00, USB\VID_05C6&PID_900E 215 | %QcomDevice900F0% = QportInstall00, USB\VID_05C6&PID_900F&MI_00 216 | %QcomDevice900F1% = QportInstall00, USB\VID_05C6&PID_900F&MI_01 217 | %QcomDevice90100% = QportInstall00, USB\VID_05C6&PID_9010&MI_00 218 | %QcomDevice90101% = QportInstall00, USB\VID_05C6&PID_9010&MI_01 219 | %QcomDevice90110% = QportInstall00, USB\VID_05C6&PID_9011&MI_00 220 | %QcomDevice90111% = QportInstall00, USB\VID_05C6&PID_9011&MI_01 221 | %QcomDevice90120% = QportInstall00, USB\VID_05C6&PID_9012&MI_00 222 | %QcomDevice90130% = QportInstall00, USB\VID_05C6&PID_9013&MI_00 223 | %QcomDevice90160% = QportInstall00, USB\VID_05C6&PID_9016&MI_00 224 | %QcomDevice90162% = QportInstall00, USB\VID_05C6&PID_9016&MI_02 225 | %QcomDevice90170% = QportInstall00, USB\VID_05C6&PID_9017&MI_00 226 | %QcomDevice90172% = QportInstall00, USB\VID_05C6&PID_9017&MI_02 227 | %QcomDevice90180% = QportInstall00, USB\VID_05C6&PID_9018&MI_00 228 | %QcomDevice90183% = QportInstall00, USB\VID_05C6&PID_9018&MI_03 229 | %QcomDevice90191% = QportInstall00, USB\VID_05C6&PID_9019&MI_01 230 | %QcomDevice90192% = QportInstall00, USB\VID_05C6&PID_9019&MI_02 231 | %QcomDevice901B1% = QportInstall00, USB\VID_05C6&PID_901B&MI_01 232 | %QcomDevice901C0% = QportInstall00, USB\VID_05C6&PID_901C&MI_00 233 | %QcomDevice90200% = QportInstall00, USB\VID_05C6&PID_9020&MI_00 234 | %QcomDevice90203% = QportInstall00, USB\VID_05C6&PID_9020&MI_03 235 | %QcomDevice90210% = QportInstall00, USB\VID_05C6&PID_9021&MI_00 236 | %QcomDevice90220% = QportInstall00, USB\VID_05C6&PID_9022&MI_00 237 | %QcomDevice901D0% = QportInstall00, USB\VID_05C6&PID_901D&MI_00 238 | %QcomDevice901F0% = QportInstall00, USB\VID_05C6&PID_901F&MI_00 239 | %QcomDevice90250% = QportInstall00, USB\VID_05C6&PID_9025&MI_00 240 | ;%QcomDevice90253% = QportInstall00, USB\VID_05C6&PID_9025&MI_03 241 | %QcomDevice90260% = QportInstall00, USB\VID_05C6&PID_9026&MI_00 242 | ;%QcomDevice90262% = QportInstall00, USB\VID_05C6&PID_9026&MI_02 243 | %QcomDevice90280% = QportInstall00, USB\VID_05C6&PID_9028&MI_00 244 | %QcomDevice90281% = QportInstall00, USB\VID_05C6&PID_9028&MI_01 245 | %QcomDevice90290% = QportInstall00, USB\VID_05C6&PID_9029&MI_00 246 | %QcomDevice90292% = QportInstall00, USB\VID_05C6&PID_9029&MI_02 247 | %QcomDevice902C2% = QportInstall00, USB\VID_05C6&PID_902C&MI_02 248 | %QcomDevice902D2% = QportInstall00, USB\VID_05C6&PID_902D&MI_02 249 | %QcomDevice902E2% = QportInstall00, USB\VID_05C6&PID_902E&MI_02 250 | %QcomDevice902E4% = QportInstall00, USB\VID_05C6&PID_902E&MI_04 251 | %QcomDevice902F2% = QportInstall00, USB\VID_05C6&PID_902F&MI_02 252 | %QcomDevice90303% = QportInstall00, USB\VID_05C6&PID_9030&MI_03 253 | %QcomDevice90310% = QportInstall00, USB\VID_05C6&PID_9031&MI_00 254 | %QcomDevice90311% = QportInstall00, USB\VID_05C6&PID_9031&MI_01 255 | %QcomDevice90314% = QportInstall00, USB\VID_05C6&PID_9031&MI_04 256 | %QcomDevice90320% = QportInstall00, USB\VID_05C6&PID_9032&MI_00 257 | %QcomDevice90321% = QportInstall00, USB\VID_05C6&PID_9032&MI_01 258 | %QcomDevice90323% = QportInstall00, USB\VID_05C6&PID_9032&MI_03 259 | %QcomDevice90330% = QportInstall00, USB\VID_05C6&PID_9033&MI_00 260 | %QcomDevice90331% = QportInstall00, USB\VID_05C6&PID_9033&MI_01 261 | %QcomDevice90340% = QportInstall00, USB\VID_05C6&PID_9034&MI_00 262 | %QcomDevice90341% = QportInstall00, USB\VID_05C6&PID_9034&MI_01 263 | %QcomDevice90350% = QportInstall00, USB\VID_05C6&PID_9035&MI_00 264 | %QcomDevice90351% = QportInstall00, USB\VID_05C6&PID_9035&MI_01 265 | %QcomDevice90360% = QportInstall00, USB\VID_05C6&PID_9036&MI_00 266 | %QcomDevice90361% = QportInstall00, USB\VID_05C6&PID_9036&MI_01 267 | %QcomDevice90370% = QportInstall00, USB\VID_05C6&PID_9037&MI_00 268 | %QcomDevice90371% = QportInstall00, USB\VID_05C6&PID_9037&MI_01 269 | %QcomDevice90380% = QportInstall00, USB\VID_05C6&PID_9038&MI_00 270 | %QcomDevice90381% = QportInstall00, USB\VID_05C6&PID_9038&MI_01 271 | %QcomDevice903A1% = QportInstall00, USB\VID_05C6&PID_903A&MI_01 272 | %QcomDevice903B0% = QportInstall00, USB\VID_05C6&PID_903B&MI_00 273 | %QcomDevice903B1% = QportInstall00, USB\VID_05C6&PID_903B&MI_01 274 | %QcomDevice903C0% = QportInstall00, USB\VID_05C6&PID_903C&MI_00 275 | %QcomDevice903C1% = QportInstall00, USB\VID_05C6&PID_903C&MI_01 276 | %QcomDevice903D0% = QportInstall00, USB\VID_05C6&PID_903D&MI_00 277 | %QcomDevice903E0% = QportInstall00, USB\VID_05C6&PID_903E&MI_00 278 | %QcomDevice903F1% = QportInstall00, USB\VID_05C6&PID_903F&MI_01 279 | %QcomDevice903F2% = QportInstall00, USB\VID_05C6&PID_903F&MI_02 280 | %QcomDevice90401% = QportInstall00, USB\VID_05C6&PID_9040&MI_01 281 | %QcomDevice90402% = QportInstall00, USB\VID_05C6&PID_9040&MI_02 282 | %QcomDevice90412% = QportInstall00, USB\VID_05C6&PID_9041&MI_02 283 | %QcomDevice90413% = QportInstall00, USB\VID_05C6&PID_9041&MI_03 284 | %QcomDevice90422% = QportInstall00, USB\VID_05C6&PID_9042&MI_02 285 | %QcomDevice90423% = QportInstall00, USB\VID_05C6&PID_9042&MI_03 286 | %QcomDevice90430% = QportInstall00, USB\VID_05C6&PID_9043&MI_00 287 | %QcomDevice90431% = QportInstall00, USB\VID_05C6&PID_9043&MI_01 288 | %QcomDevice90440% = QportInstall00, USB\VID_05C6&PID_9044&MI_00 289 | %QcomDevice90441% = QportInstall00, USB\VID_05C6&PID_9044&MI_01 290 | %QcomDevice90450% = QportInstall00, USB\VID_05C6&PID_9045&MI_00 291 | %QcomDevice90451% = QportInstall00, USB\VID_05C6&PID_9045&MI_01 292 | %QcomDevice91000% = QportInstall00, USB\VID_05C6&PID_9100&MI_00 293 | %QcomDevice91001% = QportInstall00, USB\VID_05C6&PID_9100&MI_01 294 | %QcomDevice91010% = QportInstall00, USB\VID_05C6&PID_9101&MI_00 295 | %QcomDevice91011% = QportInstall00, USB\VID_05C6&PID_9101&MI_01 296 | %QcomDevice91012% = QportInstall00, USB\VID_05C6&PID_9101&MI_02 297 | %QcomDevice91014% = QportInstall00, USB\VID_05C6&PID_9101&MI_04 298 | %QcomDevice91015% = QportInstall00, USB\VID_05C6&PID_9101&MI_05 299 | %QcomDevice94020% = QportInstall00, USB\VID_05C6&PID_9402&MI_00 300 | %QcomDevice94021% = QportInstall00, USB\VID_05C6&PID_9402&MI_01 301 | %QcomDevice94040% = QportInstall00, USB\VID_05C6&PID_9404&MI_00 302 | %QcomDevice94041% = QportInstall00, USB\VID_05C6&PID_9404&MI_01 303 | %QcomDeviceF0051% = QportInstall00, USB\VID_05C6&PID_F005&MI_01 304 | %QcomDevice31991% = QportInstall00, USB\VID_05C6&PID_3199&MI_01 305 | %QcomDevice31992% = QportInstall00, USB\VID_05C6&PID_3199&MI_02 306 | %QcomDevice31993% = QportInstall00, USB\VID_05C6&PID_3199&MI_03 307 | %QcomDevice319A1% = QportInstall00, USB\VID_05C6&PID_319A&MI_01 308 | %QcomDevice319A2% = QportInstall00, USB\VID_05C6&PID_319A&MI_02 309 | %QcomDevice319A3% = QportInstall00, USB\VID_05C6&PID_319A&MI_03 310 | %QcomDevice319B0% = QportInstall00, USB\VID_05C6&PID_319B&MI_00 311 | %QcomDevice319B2% = QportInstall00, USB\VID_05C6&PID_319B&MI_02 312 | %QcomDevice319B3% = QportInstall00, USB\VID_05C6&PID_319B&MI_03 313 | %QcomDeviceF00D% = QportInstall00, USB\VID_05C6&PID_F00D 314 | 315 | [QcomSerialPort.NTamd64] 316 | %QcomDevice00% = QportInstall00, USB\VID_05C6&PID_3197&MI_01 317 | %QcomDevice6k% = QportInstall00, USB\VID_05C6&PID_6000&MI_01 318 | %QcomDeviceNMEA% = QportInstall00, USB\VID_05C6&PID_6000&MI_02 319 | %QcomDevice7k% = QportInstall00, USB\VID_05C6&PID_7000&MI_01 320 | %QcomDevice7k1% = QportInstall00, USB\VID_05C6&PID_7001&MI_00 321 | %QcomDevice7k3% = QportInstall00, USB\VID_05C6&PID_7001&MI_03 322 | %QcomDevice70020% = QportInstall00, USB\VID_05C6&PID_7002&MI_00 323 | %QcomDevice70023% = QportInstall00, USB\VID_05C6&PID_7002&MI_03 324 | %QcomDevice70024% = QportInstall00, USB\VID_05C6&PID_7002&MI_04 325 | %QcomDevice71010% = QportInstall00, USB\VID_05C6&PID_7101&MI_00 326 | %QcomDevice71015% = QportInstall00, USB\VID_05C6&PID_7101&MI_05 327 | %QcomDevice71020% = QportInstall00, USB\VID_05C6&PID_7102&MI_00 328 | %QcomDevice71025% = QportInstall00, USB\VID_05C6&PID_7102&MI_05 329 | %QcomDevice71026% = QportInstall00, USB\VID_05C6&PID_7102&MI_06 330 | %QcomDevice80000% = QportInstall00, USB\VID_05C6&PID_8000&MI_00 331 | %QcomDevice80002% = QportInstall00, USB\VID_05C6&PID_8000&MI_02 332 | %QcomDevice80010% = QportInstall00, USB\VID_05C6&PID_8001&MI_00 333 | %QcomDevice80012% = QportInstall00, USB\VID_05C6&PID_8001&MI_02 334 | %QcomDevice80020% = QportInstall00, USB\VID_05C6&PID_8002&MI_00 335 | %QcomDevice80022% = QportInstall00, USB\VID_05C6&PID_8002&MI_02 336 | %QcomDevice90080% = QportInstall00, USB\VID_05C6&PID_9008 337 | %QcomDevice90000% = QportInstall00, USB\VID_05C6&PID_9000&MI_00 338 | %QcomDevice90001% = QportInstall00, USB\VID_05C6&PID_9000&MI_01 339 | %QcomDevice90010% = QportInstall00, USB\VID_05C6&PID_9001&MI_00 340 | %QcomDevice90011% = QportInstall00, USB\VID_05C6&PID_9001&MI_01 341 | %QcomDevice90020% = QportInstall00, USB\VID_05C6&PID_9002&MI_00 342 | %QcomDevice90021% = QportInstall00, USB\VID_05C6&PID_9002&MI_01 343 | %QcomDevice90030% = QportInstall00, USB\VID_05C6&PID_9003&MI_00 344 | %QcomDevice90031% = QportInstall00, USB\VID_05C6&PID_9003&MI_01 345 | %QcomDevice90032% = QportInstall00, USB\VID_05C6&PID_9003&MI_02 346 | %QcomDevice32001% = QportInstall00, USB\VID_05C6&PID_3200&MI_01 347 | %QcomDevice32002% = QportInstall00, USB\VID_05C6&PID_3200&MI_02 348 | %QcomDevice90040% = QportInstall00, USB\VID_05C6&PID_9004&MI_00 349 | %QcomDevice90050% = QportInstall00, USB\VID_05C6&PID_9005&MI_00 350 | %QcomDevice90060% = QportInstall00, USB\VID_05C6&PID_9006&MI_00 351 | %QcomDevice900A0% = QportInstall00, USB\VID_05C6&PID_900A&MI_00 352 | %QcomDevice900A1% = QportInstall00, USB\VID_05C6&PID_900A&MI_01 353 | %QcomDevice900B0% = QportInstall00, USB\VID_05C6&PID_900B&MI_00 354 | %QcomDevice900C0% = QportInstall00, USB\VID_05C6&PID_900C&MI_00 355 | %QcomDevice900C1% = QportInstall00, USB\VID_05C6&PID_900C&MI_01 356 | %QcomDevice900D0% = QportInstall00, USB\VID_05C6&PID_900D&MI_00 357 | %QcomDevice900D1% = QportInstall00, USB\VID_05C6&PID_900D&MI_01 358 | %QcomDevice900E0% = QportInstall00, USB\VID_05C6&PID_900E 359 | %QcomDevice900F0% = QportInstall00, USB\VID_05C6&PID_900F&MI_00 360 | %QcomDevice900F1% = QportInstall00, USB\VID_05C6&PID_900F&MI_01 361 | %QcomDevice90100% = QportInstall00, USB\VID_05C6&PID_9010&MI_00 362 | %QcomDevice90101% = QportInstall00, USB\VID_05C6&PID_9010&MI_01 363 | %QcomDevice90110% = QportInstall00, USB\VID_05C6&PID_9011&MI_00 364 | %QcomDevice90111% = QportInstall00, USB\VID_05C6&PID_9011&MI_01 365 | %QcomDevice90120% = QportInstall00, USB\VID_05C6&PID_9012&MI_00 366 | %QcomDevice90130% = QportInstall00, USB\VID_05C6&PID_9013&MI_00 367 | %QcomDevice90160% = QportInstall00, USB\VID_05C6&PID_9016&MI_00 368 | %QcomDevice90162% = QportInstall00, USB\VID_05C6&PID_9016&MI_02 369 | %QcomDevice90170% = QportInstall00, USB\VID_05C6&PID_9017&MI_00 370 | %QcomDevice90172% = QportInstall00, USB\VID_05C6&PID_9017&MI_02 371 | %QcomDevice90180% = QportInstall00, USB\VID_05C6&PID_9018&MI_00 372 | %QcomDevice90183% = QportInstall00, USB\VID_05C6&PID_9018&MI_03 373 | %QcomDevice90191% = QportInstall00, USB\VID_05C6&PID_9019&MI_01 374 | %QcomDevice90192% = QportInstall00, USB\VID_05C6&PID_9019&MI_02 375 | %QcomDevice901B1% = QportInstall00, USB\VID_05C6&PID_901B&MI_01 376 | %QcomDevice901C0% = QportInstall00, USB\VID_05C6&PID_901C&MI_00 377 | %QcomDevice90200% = QportInstall00, USB\VID_05C6&PID_9020&MI_00 378 | %QcomDevice90203% = QportInstall00, USB\VID_05C6&PID_9020&MI_03 379 | %QcomDevice90210% = QportInstall00, USB\VID_05C6&PID_9021&MI_00 380 | %QcomDevice90220% = QportInstall00, USB\VID_05C6&PID_9022&MI_00 381 | %QcomDevice901D0% = QportInstall00, USB\VID_05C6&PID_901D&MI_00 382 | %QcomDevice901F0% = QportInstall00, USB\VID_05C6&PID_901F&MI_00 383 | %QcomDevice90250% = QportInstall00, USB\VID_05C6&PID_9025&MI_00 384 | ;%QcomDevice90253% = QportInstall00, USB\VID_05C6&PID_9025&MI_03 385 | %QcomDevice90260% = QportInstall00, USB\VID_05C6&PID_9026&MI_00 386 | ;%QcomDevice90262% = QportInstall00, USB\VID_05C6&PID_9026&MI_02 387 | %QcomDevice90280% = QportInstall00, USB\VID_05C6&PID_9028&MI_00 388 | %QcomDevice90281% = QportInstall00, USB\VID_05C6&PID_9028&MI_01 389 | %QcomDevice90290% = QportInstall00, USB\VID_05C6&PID_9029&MI_00 390 | %QcomDevice90292% = QportInstall00, USB\VID_05C6&PID_9029&MI_02 391 | %QcomDevice902C2% = QportInstall00, USB\VID_05C6&PID_902C&MI_02 392 | %QcomDevice902D2% = QportInstall00, USB\VID_05C6&PID_902D&MI_02 393 | %QcomDevice902E2% = QportInstall00, USB\VID_05C6&PID_902E&MI_02 394 | %QcomDevice902E4% = QportInstall00, USB\VID_05C6&PID_902E&MI_04 395 | %QcomDevice902F2% = QportInstall00, USB\VID_05C6&PID_902F&MI_02 396 | %QcomDevice90303% = QportInstall00, USB\VID_05C6&PID_9030&MI_03 397 | %QcomDevice90310% = QportInstall00, USB\VID_05C6&PID_9031&MI_00 398 | %QcomDevice90311% = QportInstall00, USB\VID_05C6&PID_9031&MI_01 399 | %QcomDevice90314% = QportInstall00, USB\VID_05C6&PID_9031&MI_04 400 | %QcomDevice90320% = QportInstall00, USB\VID_05C6&PID_9032&MI_00 401 | %QcomDevice90321% = QportInstall00, USB\VID_05C6&PID_9032&MI_01 402 | %QcomDevice90323% = QportInstall00, USB\VID_05C6&PID_9032&MI_03 403 | %QcomDevice90330% = QportInstall00, USB\VID_05C6&PID_9033&MI_00 404 | %QcomDevice90331% = QportInstall00, USB\VID_05C6&PID_9033&MI_01 405 | %QcomDevice90340% = QportInstall00, USB\VID_05C6&PID_9034&MI_00 406 | %QcomDevice90341% = QportInstall00, USB\VID_05C6&PID_9034&MI_01 407 | %QcomDevice90350% = QportInstall00, USB\VID_05C6&PID_9035&MI_00 408 | %QcomDevice90351% = QportInstall00, USB\VID_05C6&PID_9035&MI_01 409 | %QcomDevice90360% = QportInstall00, USB\VID_05C6&PID_9036&MI_00 410 | %QcomDevice90361% = QportInstall00, USB\VID_05C6&PID_9036&MI_01 411 | %QcomDevice90370% = QportInstall00, USB\VID_05C6&PID_9037&MI_00 412 | %QcomDevice90371% = QportInstall00, USB\VID_05C6&PID_9037&MI_01 413 | %QcomDevice90380% = QportInstall00, USB\VID_05C6&PID_9038&MI_00 414 | %QcomDevice90381% = QportInstall00, USB\VID_05C6&PID_9038&MI_01 415 | %QcomDevice903A1% = QportInstall00, USB\VID_05C6&PID_903A&MI_01 416 | %QcomDevice903B0% = QportInstall00, USB\VID_05C6&PID_903B&MI_00 417 | %QcomDevice903B1% = QportInstall00, USB\VID_05C6&PID_903B&MI_01 418 | %QcomDevice903C0% = QportInstall00, USB\VID_05C6&PID_903C&MI_00 419 | %QcomDevice903C1% = QportInstall00, USB\VID_05C6&PID_903C&MI_01 420 | %QcomDevice903D0% = QportInstall00, USB\VID_05C6&PID_903D&MI_00 421 | %QcomDevice903E0% = QportInstall00, USB\VID_05C6&PID_903E&MI_00 422 | %QcomDevice903F1% = QportInstall00, USB\VID_05C6&PID_903F&MI_01 423 | %QcomDevice903F2% = QportInstall00, USB\VID_05C6&PID_903F&MI_02 424 | %QcomDevice90401% = QportInstall00, USB\VID_05C6&PID_9040&MI_01 425 | %QcomDevice90402% = QportInstall00, USB\VID_05C6&PID_9040&MI_02 426 | %QcomDevice90412% = QportInstall00, USB\VID_05C6&PID_9041&MI_02 427 | %QcomDevice90413% = QportInstall00, USB\VID_05C6&PID_9041&MI_03 428 | %QcomDevice90422% = QportInstall00, USB\VID_05C6&PID_9042&MI_02 429 | %QcomDevice90423% = QportInstall00, USB\VID_05C6&PID_9042&MI_03 430 | %QcomDevice90430% = QportInstall00, USB\VID_05C6&PID_9043&MI_00 431 | %QcomDevice90431% = QportInstall00, USB\VID_05C6&PID_9043&MI_01 432 | %QcomDevice90440% = QportInstall00, USB\VID_05C6&PID_9044&MI_00 433 | %QcomDevice90441% = QportInstall00, USB\VID_05C6&PID_9044&MI_01 434 | %QcomDevice90450% = QportInstall00, USB\VID_05C6&PID_9045&MI_00 435 | %QcomDevice90451% = QportInstall00, USB\VID_05C6&PID_9045&MI_01 436 | %QcomDevice91000% = QportInstall00, USB\VID_05C6&PID_9100&MI_00 437 | %QcomDevice91001% = QportInstall00, USB\VID_05C6&PID_9100&MI_01 438 | %QcomDevice91010% = QportInstall00, USB\VID_05C6&PID_9101&MI_00 439 | %QcomDevice91011% = QportInstall00, USB\VID_05C6&PID_9101&MI_01 440 | %QcomDevice91012% = QportInstall00, USB\VID_05C6&PID_9101&MI_02 441 | %QcomDevice91014% = QportInstall00, USB\VID_05C6&PID_9101&MI_04 442 | %QcomDevice91015% = QportInstall00, USB\VID_05C6&PID_9101&MI_05 443 | %QcomDevice94020% = QportInstall00, USB\VID_05C6&PID_9402&MI_00 444 | %QcomDevice94021% = QportInstall00, USB\VID_05C6&PID_9402&MI_01 445 | %QcomDevice94040% = QportInstall00, USB\VID_05C6&PID_9404&MI_00 446 | %QcomDevice94041% = QportInstall00, USB\VID_05C6&PID_9404&MI_01 447 | %QcomDeviceF0051% = QportInstall00, USB\VID_05C6&PID_F005&MI_01 448 | %QcomDevice31991% = QportInstall00, USB\VID_05C6&PID_3199&MI_01 449 | %QcomDevice31992% = QportInstall00, USB\VID_05C6&PID_3199&MI_02 450 | %QcomDevice31993% = QportInstall00, USB\VID_05C6&PID_3199&MI_03 451 | %QcomDevice319A1% = QportInstall00, USB\VID_05C6&PID_319A&MI_01 452 | %QcomDevice319A2% = QportInstall00, USB\VID_05C6&PID_319A&MI_02 453 | %QcomDevice319A3% = QportInstall00, USB\VID_05C6&PID_319A&MI_03 454 | %QcomDevice319B0% = QportInstall00, USB\VID_05C6&PID_319B&MI_00 455 | %QcomDevice319B2% = QportInstall00, USB\VID_05C6&PID_319B&MI_02 456 | %QcomDevice319B3% = QportInstall00, USB\VID_05C6&PID_319B&MI_03 457 | %QcomDeviceF00D% = QportInstall00, USB\VID_05C6&PID_F00D 458 | 459 | [QportInstall00.NT] 460 | CopyFiles=QCUsbDriverFiles 461 | AddReg = All00, AddReg 462 | 463 | [QCUsbDriverFiles] 464 | qcusbser.sys 465 | 466 | [QportInstall00.NT.CoInstallers] 467 | CopyFiles=CoInstaller_CopyFiles 468 | AddReg=CoInstaller_AddReg 469 | 470 | [CoInstaller_CopyFiles] 471 | qcCoInstaller.dll 472 | 473 | [DestinationDirs] 474 | CoInstaller_CopyFiles = 11 ; System Dir(system32 on NT) 475 | DefaultDestDir = 12 476 | 477 | [QportInstall00.NT.Services] 478 | AddService=qcusbser, 0x00000002, QC_USBSerialService 479 | 480 | [QC_USBSerialService] 481 | DisplayName = %QCUSBSER% 482 | ServiceType = 1 483 | StartType = 3 484 | ErrorControl = 1 485 | ServiceBinary = %12%\qcusbser.sys 486 | 487 | [All00] 488 | HKR,,NTMPDriver,,qcusbser.sys 489 | 490 | [AddReg] 491 | HKR,,PortSubClass,1,01 492 | HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" 493 | 494 | [CoInstaller_AddReg] 495 | HKR,,CoInstallers32,0x00010000,"qcCoInstaller.dll,qcCoInstaller" 496 | 497 | [Strings] 498 | QCUSBSER = "Qualcomm USB Device for Legacy Serial Communication" 499 | QcomSrcDisk = "QUALCOMM USB Driver Disk" 500 | QUALCOMM = "Qualcomm Incorporated" 501 | QcomDevice00 = "Qualcomm Diagnostics Interface 3197" 502 | QcomDevice6k = "Qualcomm Diagnostics Interface 6000" 503 | QcomDeviceNMEA = "Qualcomm NMEA Device" 504 | QcomDevice7k = "Qualcomm Diagnostics Interface 7000" 505 | QcomDevice7k1 = "Qualcomm RRDM 7001" 506 | QcomDevice7k3 = "Qualcomm Diagnostics Interface 7001" 507 | QcomDevice70020 = "Qualcomm RRDM 7002" 508 | QcomDevice70023 = "Qualcomm Diagnostics Interface 7002" 509 | QcomDevice70024 = "Qualcomm NMEA 7002" 510 | QcomDevice71010 = "Qualcomm RRDM 7101" 511 | QcomDevice71015 = "Qualcomm Diagnostics Interface 7101" 512 | QcomDevice71020 = "Qualcomm RRDM 7102" 513 | QcomDevice71025 = "Qualcomm Diagnostics Interface 7102" 514 | QcomDevice71026 = "Qualcomm NMEA 7102" 515 | QcomDevice80000 = "Qualcomm HS-USB Diagnostics 8000" 516 | QcomDevice80002 = "Qualcomm HS-USB NMEA 8000" 517 | QcomDevice80010 = "Qualcomm HS-USB Diagnostics 8001" 518 | QcomDevice80012 = "Qualcomm HS-USB NMEA 8001" 519 | QcomDevice80020 = "Qualcomm HS-USB Diagnostics 8002" 520 | QcomDevice80022 = "Qualcomm HS-USB NMEA 8002" 521 | QcomDevice90080 = "Qualcomm HS-USB QDLoader 9008" 522 | QcomDevice90000 = "Qualcomm HS-USB Diagnostics 9000" 523 | QcomDevice90001 = "Qualcomm HS-USB NMEA 9000" 524 | QcomDevice90010 = "Qualcomm HS-USB Diagnostics 9001" 525 | QcomDevice90011 = "Qualcomm HS-USB NMEA 9001" 526 | QcomDevice90020 = "Qualcomm HS-USB Diagnostics 9002" 527 | QcomDevice90021 = "Qualcomm HS-USB NMEA 9002" 528 | QcomDevice90030 = "Qualcomm HS-USB Diagnostics 9003" 529 | QcomDevice90031 = "Qualcomm HS-USB NMEA 9003" 530 | QcomDevice90032 = "Qualcomm HS-USB AT Port 9003" 531 | QcomDevice32001 = "Qualcomm WinMobile Diagnostics 3200" 532 | QcomDevice32002 = "Qualcomm WinMobile NMEA 3200" 533 | QcomDevice90040 = "Qualcomm HS-USB Diagnostics 9004" 534 | QcomDevice90050 = "Qualcomm HS-USB Diagnostics 9005" 535 | QcomDevice90060 = "Qualcomm HS-USB Diagnostics 9006" 536 | QcomDevice900A0 = "Qualcomm HS-USB Diagnostics 900A" 537 | QcomDevice900A1 = "Qualcomm HS-USB NMEA 900A" 538 | QcomDevice900B0 = "Qualcomm HS-USB Diagnostics 900B" 539 | QcomDevice900C0 = "Qualcomm HS-USB Diagnostics 900C" 540 | QcomDevice900C1 = "Qualcomm HS-USB NMEA 900C" 541 | QcomDevice900D0 = "Qualcomm HS-USB Diagnostics 900D" 542 | QcomDevice900D1 = "Qualcomm HS-USB NMEA 900D" 543 | QcomDevice900E0 = "Qualcomm HS-USB Diagnostics 900E" 544 | QcomDevice900F0 = "Qualcomm HS-USB Diagnostics 900F" 545 | QcomDevice900F1 = "Qualcomm HS-USB NMEA 900F" 546 | QcomDevice90100 = "Qualcomm HS-USB Diagnostics 9010" 547 | QcomDevice90101 = "Qualcomm HS-USB NMEA 9010" 548 | QcomDevice90110 = "Qualcomm HS-USB Diagnostics 9011" 549 | QcomDevice90111 = "Qualcomm HS-USB NMEA 9011" 550 | QcomDevice90120 = "Qualcomm HS-USB Diagnostics 9012" 551 | QcomDevice90130 = "Qualcomm HS-USB Diagnostics 9013" 552 | QcomDevice90160 = "Qualcomm HS-USB Diagnostics 9016" 553 | QcomDevice90162 = "Qualcomm HS-USB NMEA 9016" 554 | QcomDevice90170 = "Qualcomm HS-USB Diagnostics 9017" 555 | QcomDevice90172 = "Qualcomm HS-USB NMEA 9017" 556 | QcomDevice90180 = "Qualcomm HS-USB Android DIAG 9018" 557 | QcomDevice90183 = "Qualcomm HS-USB Android GPS 9018" 558 | QcomDevice90191 = "Qualcomm WinMobile Diagnostics 9019" 559 | QcomDevice90192 = "Qualcomm WinMobile NMEA 9019" 560 | QcomDevice901B1 = "Qualcomm HS-USB Diagnostics 901B" 561 | QcomDevice901C0 = "Qualcomm HS-USB Diagnostics 901C" 562 | QcomDevice90200 = "Qualcomm HS-USB Android DIAG 9020" 563 | QcomDevice90203 = "Qualcomm HS-USB Android GPS 9020" 564 | QcomDevice90210 = "Qualcomm HS-USB Android DIAG 9021" 565 | QcomDevice90220 = "Qualcomm HS-USB Android DIAG 9022" 566 | QcomDevice901D0 = "Qualcomm HS-USB Android DIAG 901D" 567 | QcomDevice901F0 = "Qualcomm HS-USB Android DIAG 901F" 568 | QcomDevice90250 = "Qualcomm HS-USB Diagnostics 9025" 569 | QcomDevice90253 = "Qualcomm HS-USB NMEA 9025" 570 | QcomDevice90260 = "Qualcomm HS-USB Diagnostics 9026" 571 | QcomDevice90262 = "Qualcomm HS-USB NMEA 9026" 572 | QcomDevice90280 = "Qualcomm HS-USB Diagnostics 9028" 573 | QcomDevice90281 = "Qualcomm HS-USB NMEA 9028" 574 | QcomDevice90290 = "Qualcomm HS-USB Diagnostics 9029" 575 | QcomDevice90292 = "Qualcomm HS-USB NMEA 9029" 576 | QcomDevice902C2 = "Qualcomm HS-USB Android DIAG 902C" 577 | QcomDevice902D2 = "Qualcomm HS-USB Android DIAG 902D" 578 | QcomDevice902E2 = "Qualcomm HS-USB DIAG 902E" 579 | QcomDevice902E4 = "Qualcomm HS-USB NMEA 902E" 580 | QcomDevice902F2 = "Qualcomm HS-USB Diagnostics 902F" 581 | QcomDevice90303 = "Qualcomm HS-USB Diagnostics 9030" 582 | QcomDevice90310 = "Qualcomm HS-USB MSM Diagnostics 9031" 583 | QcomDevice90311 = "Qualcomm HS-USB MDM Diagnostics 9031" 584 | QcomDevice90314 = "Qualcomm HS-USB NMEA 9031" 585 | QcomDevice90320 = "Qualcomm HS-USB MSM Diagnostics 9032" 586 | QcomDevice90321 = "Qualcomm HS-USB MDM Diagnostics 9032" 587 | QcomDevice90323 = "Qualcomm HS-USB NMEA 9032" 588 | QcomDevice90330 = "Qualcomm HS-USB Diagnostics 9033" 589 | QcomDevice90331 = "Qualcomm HS-USB NMEA 9033" 590 | QcomDevice90340 = "Qualcomm HS-USB Diagnostics 9034" 591 | QcomDevice90341 = "Qualcomm HS-USB NMEA 9034" 592 | QcomDevice90350 = "Qualcomm HS-USB MSM Diagnostics 9035" 593 | QcomDevice90351 = "Qualcomm HS-USB MDM Diagnostics 9035" 594 | QcomDevice90360 = "Qualcomm HS-USB MSM Diagnostics 9036" 595 | QcomDevice90361 = "Qualcomm HS-USB MDM Diagnostics 9036" 596 | QcomDevice90370 = "Qualcomm HS-USB MSM Diagnostics 9037" 597 | QcomDevice90371 = "Qualcomm HS-USB MDM Diagnostics 9037" 598 | QcomDevice90380 = "Qualcomm HS-USB MSM Diagnostics 9038" 599 | QcomDevice90381 = "Qualcomm HS-USB MDM Diagnostics 9038" 600 | QcomDevice903A1 = "Qualcomm HS-USB Diagnostics 903A" 601 | QcomDevice903B0 = "Qualcomm HS-USB MSM Diagnostics 903B" 602 | QcomDevice903B1 = "Qualcomm HS-USB MDM Diagnostics 903B" 603 | QcomDevice903C0 = "Qualcomm HS-USB MSM Diagnostics 903C" 604 | QcomDevice903C1 = "Qualcomm HS-USB MDM Diagnostics 903C" 605 | QcomDevice903D0 = "Qualcomm HS-USB Diagnostics 903D" 606 | QcomDevice903E0 = "Qualcomm HS-USB Diagnostics 903E" 607 | QcomDevice903F1 = "Qualcomm HS-USB MSM Diagnostics 903F" 608 | QcomDevice903F2 = "Qualcomm HS-USB MDM Diagnostics 903F" 609 | QcomDevice90401 = "Qualcomm HS-USB MSM Diagnostics 9040" 610 | QcomDevice90402 = "Qualcomm HS-USB MDM Diagnostics 9040" 611 | QcomDevice90412 = "Qualcomm HS-USB MSM Diagnostics 9041" 612 | QcomDevice90413 = "Qualcomm HS-USB MDM Diagnostics 9041" 613 | QcomDevice90422 = "Qualcomm HS-USB MSM Diagnostics 9042" 614 | QcomDevice90423 = "Qualcomm HS-USB MDM Diagnostics 9042" 615 | QcomDevice90430 = "Qualcomm HS-USB Diagnostics 9043" 616 | QcomDevice90431 = "Qualcomm HS-USB NMEA 9043" 617 | QcomDevice90440 = "Qualcomm HS-USB MSM Diagnostics 9044" 618 | QcomDevice90441 = "Qualcomm HS-USB MDM Diagnostics 9044" 619 | QcomDevice90450 = "Qualcomm HS-USB MSM Diagnostics 9045" 620 | QcomDevice90451 = "Qualcomm HS-USB MDM Diagnostics 9045" 621 | QcomDevice91000 = "Qualcomm Symbian USB Diagnostics 9100" 622 | QcomDevice91001 = "Qualcomm Symbian USB Trace 9100" 623 | QcomDevice91010 = "Qualcomm Symbian USB Diagnostics 9101" 624 | QcomDevice91011 = "Qualcomm Symbian USB Trace 9101" 625 | QcomDevice91012 = "Qualcomm Symbian USB IP 9101" 626 | QcomDevice91014 = "Qualcomm Symbian USB General Purpose 9101" 627 | QcomDevice91015 = "Qualcomm Symbian USB Shell 9101" 628 | QcomDevice94020 = "Qualcomm HS-USB Diagnostics 9402" 629 | QcomDevice94021 = "Qualcomm HS-USB NMEA 9402" 630 | QcomDevice94040 = "Qualcomm HS-USB Diagnostics 9404" 631 | QcomDevice94041 = "Qualcomm HS-USB NMEA 9404" 632 | QcomDeviceF0051 = "Qualcomm HS-USB Diagnostics F005" 633 | QcomDevice31991 = "Qualcomm WinMobile Diagnostics 3199" 634 | QcomDevice31992 = "Qualcomm WinMobile NMEA 3199" 635 | QcomDevice31993 = "Qualcomm WinMobile TRACE 3199" 636 | QcomDevice319A1 = "Qualcomm WinMobile Diagnostics 319A" 637 | QcomDevice319A2 = "Qualcomm WinMobile NMEA 319A" 638 | QcomDevice319A3 = "Qualcomm WinMobile TRACE 319A" 639 | QcomDevice319B0 = "Qualcomm WinMobile Diagnostics 319B" 640 | QcomDevice319B2 = "Qualcomm WinMobile NMEA 319B" 641 | QcomDevice319B3 = "Qualcomm WinMobile TRACE 319B" 642 | QcomDeviceF00D = "Qualcomm Mary Samsonite Profiling Board" 643 | 644 | -------------------------------------------------------------------------------- /qpst-drivers/amd64/qcusbser.sys: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jareddantis/unbrick_8960/64804022a2daad2e741cb202257a6db558079453/qpst-drivers/amd64/qcusbser.sys -------------------------------------------------------------------------------- /qpst-drivers/qhsusb_dload/Qualcomm_QDLoader_32bit_Driver.inf: -------------------------------------------------------------------------------- 1 | [Version] 2 | Signature="$Windows NT$" 3 | Class=Ports 4 | ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318} 5 | Provider=%MFGNAME% 6 | DriverVer=20/02/2010,1.0.0000.0 7 | 8 | [Manufacturer] 9 | %MFGNAME%=QcomSerialPort,NT,NTamd64 10 | 11 | [DestinationDirs] 12 | DefaultDestDir = 12 13 | 14 | [QcomSerialPort.NT] 15 | %QcomDevice00% = DriverInstall, USB\VID_05C6&PID_3197&MI_01 16 | %QcomDevice6k% = DriverInstall, USB\VID_05C6&PID_6000&MI_01 17 | %QcomDeviceNMEA% = DriverInstall, USB\VID_05C6&PID_6000&MI_02 18 | %QcomDevice7k% = DriverInstall, USB\VID_05C6&PID_7000&MI_01 19 | %QcomDevice7k1% = DriverInstall, USB\VID_05C6&PID_7001&MI_00 20 | %QcomDevice7k3% = DriverInstall, USB\VID_05C6&PID_7001&MI_03 21 | %QcomDevice70020% = DriverInstall, USB\VID_05C6&PID_7002&MI_00 22 | %QcomDevice70023% = DriverInstall, USB\VID_05C6&PID_7002&MI_03 23 | %QcomDevice70024% = DriverInstall, USB\VID_05C6&PID_7002&MI_04 24 | %QcomDevice71010% = DriverInstall, USB\VID_05C6&PID_7101&MI_00 25 | %QcomDevice71015% = DriverInstall, USB\VID_05C6&PID_7101&MI_05 26 | %QcomDevice71020% = DriverInstall, USB\VID_05C6&PID_7102&MI_00 27 | %QcomDevice71025% = DriverInstall, USB\VID_05C6&PID_7102&MI_05 28 | %QcomDevice71026% = DriverInstall, USB\VID_05C6&PID_7102&MI_06 29 | %QcomDevice80000% = DriverInstall, USB\VID_05C6&PID_8000&MI_00 30 | %QcomDevice80002% = DriverInstall, USB\VID_05C6&PID_8000&MI_02 31 | %QcomDevice80010% = DriverInstall, USB\VID_05C6&PID_8001&MI_00 32 | %QcomDevice80012% = DriverInstall, USB\VID_05C6&PID_8001&MI_02 33 | %QcomDevice80020% = DriverInstall, USB\VID_05C6&PID_8002&MI_00 34 | %QcomDevice80022% = DriverInstall, USB\VID_05C6&PID_8002&MI_02 35 | %QcomDevice90080% = DriverInstall, USB\VID_05C6&PID_9008 36 | %QcomDevice90000% = DriverInstall, USB\VID_05C6&PID_9000&MI_00 37 | %QcomDevice90001% = DriverInstall, USB\VID_05C6&PID_9000&MI_01 38 | %QcomDevice90010% = DriverInstall, USB\VID_05C6&PID_9001&MI_00 39 | %QcomDevice90011% = DriverInstall, USB\VID_05C6&PID_9001&MI_01 40 | %QcomDevice90020% = DriverInstall, USB\VID_05C6&PID_9002&MI_00 41 | %QcomDevice90021% = DriverInstall, USB\VID_05C6&PID_9002&MI_01 42 | %QcomDevice90030% = DriverInstall, USB\VID_05C6&PID_9003&MI_00 43 | %QcomDevice90031% = DriverInstall, USB\VID_05C6&PID_9003&MI_01 44 | %QcomDevice90032% = DriverInstall, USB\VID_05C6&PID_9003&MI_02 45 | %QcomDevice32001% = DriverInstall, USB\VID_05C6&PID_3200&MI_01 46 | %QcomDevice32002% = DriverInstall, USB\VID_05C6&PID_3200&MI_02 47 | %QcomDevice90040% = DriverInstall, USB\VID_05C6&PID_9004&MI_00 48 | %QcomDevice90050% = DriverInstall, USB\VID_05C6&PID_9005&MI_00 49 | %QcomDevice90060% = DriverInstall, USB\VID_05C6&PID_9006&MI_00 50 | %QcomDevice900A0% = DriverInstall, USB\VID_05C6&PID_900A&MI_00 51 | %QcomDevice900A1% = DriverInstall, USB\VID_05C6&PID_900A&MI_01 52 | %QcomDevice900B0% = DriverInstall, USB\VID_05C6&PID_900B&MI_00 53 | %QcomDevice900C0% = DriverInstall, USB\VID_05C6&PID_900C&MI_00 54 | %QcomDevice900C1% = DriverInstall, USB\VID_05C6&PID_900C&MI_01 55 | %QcomDevice900D0% = DriverInstall, USB\VID_05C6&PID_900D&MI_00 56 | %QcomDevice900D1% = DriverInstall, USB\VID_05C6&PID_900D&MI_01 57 | %QcomDevice900E0% = DriverInstall, USB\VID_05C6&PID_900E 58 | %QcomDevice90120% = DriverInstall, USB\VID_05C6&PID_9012&MI_00 59 | %QcomDevice90130% = DriverInstall, USB\VID_05C6&PID_9013&MI_00 60 | %QcomDevice90160% = DriverInstall, USB\VID_05C6&PID_9016&MI_00 61 | %QcomDevice90162% = DriverInstall, USB\VID_05C6&PID_9016&MI_02 62 | %QcomDevice90170% = DriverInstall, USB\VID_05C6&PID_9017&MI_00 63 | %QcomDevice90172% = DriverInstall, USB\VID_05C6&PID_9017&MI_02 64 | %QcomDevice90180% = DriverInstall, USB\VID_05C6&PID_9018&MI_00 65 | %QcomDevice90183% = DriverInstall, USB\VID_05C6&PID_9018&MI_03 66 | %QcomDevice90191% = DriverInstall, USB\VID_05C6&PID_9019&MI_01 67 | %QcomDevice90192% = DriverInstall, USB\VID_05C6&PID_9019&MI_02 68 | %QcomDevice901C0% = DriverInstall, USB\VID_05C6&PID_901C&MI_00 69 | %QcomDevice91000% = DriverInstall, USB\VID_05C6&PID_9100&MI_00 70 | %QcomDevice91001% = DriverInstall, USB\VID_05C6&PID_9100&MI_01 71 | %QcomDevice91010% = DriverInstall, USB\VID_05C6&PID_9101&MI_00 72 | %QcomDevice91011% = DriverInstall, USB\VID_05C6&PID_9101&MI_01 73 | %QcomDevice91012% = DriverInstall, USB\VID_05C6&PID_9101&MI_02 74 | %QcomDevice91014% = DriverInstall, USB\VID_05C6&PID_9101&MI_04 75 | %QcomDevice91015% = DriverInstall, USB\VID_05C6&PID_9101&MI_05 76 | %QcomDevice94020% = DriverInstall, USB\VID_05C6&PID_9402&MI_00 77 | %QcomDevice94021% = DriverInstall, USB\VID_05C6&PID_9402&MI_01 78 | %QcomDeviceF0051% = DriverInstall, USB\VID_05C6&PID_F005&MI_01 79 | %QcomDevice31991% = DriverInstall, USB\VID_05C6&PID_3199&MI_01 80 | %QcomDevice31992% = DriverInstall, USB\VID_05C6&PID_3199&MI_02 81 | %QcomDevice31993% = DriverInstall, USB\VID_05C6&PID_3199&MI_03 82 | %QcomDevice319A1% = DriverInstall, USB\VID_05C6&PID_319A&MI_01 83 | %QcomDevice319A2% = DriverInstall, USB\VID_05C6&PID_319A&MI_02 84 | %QcomDevice319A3% = DriverInstall, USB\VID_05C6&PID_319A&MI_03 85 | %QcomDeviceF00D% = DriverInstall, USB\VID_05C6&PID_F00D 86 | 87 | 88 | [QcomSerialPort.NTamd64] 89 | %QcomDevice00% = DriverInstall, USB\VID_05C6&PID_3197&MI_01 90 | %QcomDevice6k% = DriverInstall, USB\VID_05C6&PID_6000&MI_01 91 | %QcomDeviceNMEA% = DriverInstall, USB\VID_05C6&PID_6000&MI_02 92 | %QcomDevice7k% = DriverInstall, USB\VID_05C6&PID_7000&MI_01 93 | %QcomDevice7k1% = DriverInstall, USB\VID_05C6&PID_7001&MI_00 94 | %QcomDevice7k3% = DriverInstall, USB\VID_05C6&PID_7001&MI_03 95 | %QcomDevice70020% = DriverInstall, USB\VID_05C6&PID_7002&MI_00 96 | %QcomDevice70023% = DriverInstall, USB\VID_05C6&PID_7002&MI_03 97 | %QcomDevice70024% = DriverInstall, USB\VID_05C6&PID_7002&MI_04 98 | %QcomDevice71010% = DriverInstall, USB\VID_05C6&PID_7101&MI_00 99 | %QcomDevice71015% = DriverInstall, USB\VID_05C6&PID_7101&MI_05 100 | %QcomDevice71020% = DriverInstall, USB\VID_05C6&PID_7102&MI_00 101 | %QcomDevice71025% = DriverInstall, USB\VID_05C6&PID_7102&MI_05 102 | %QcomDevice71026% = DriverInstall, USB\VID_05C6&PID_7102&MI_06 103 | %QcomDevice80000% = DriverInstall, USB\VID_05C6&PID_8000&MI_00 104 | %QcomDevice80002% = DriverInstall, USB\VID_05C6&PID_8000&MI_02 105 | %QcomDevice80010% = DriverInstall, USB\VID_05C6&PID_8001&MI_00 106 | %QcomDevice80012% = DriverInstall, USB\VID_05C6&PID_8001&MI_02 107 | %QcomDevice80020% = DriverInstall, USB\VID_05C6&PID_8002&MI_00 108 | %QcomDevice80022% = DriverInstall, USB\VID_05C6&PID_8002&MI_02 109 | %QcomDevice90080% = DriverInstall, USB\VID_05C6&PID_9008 110 | %QcomDevice90000% = DriverInstall, USB\VID_05C6&PID_9000&MI_00 111 | %QcomDevice90001% = DriverInstall, USB\VID_05C6&PID_9000&MI_01 112 | %QcomDevice90010% = DriverInstall, USB\VID_05C6&PID_9001&MI_00 113 | %QcomDevice90011% = DriverInstall, USB\VID_05C6&PID_9001&MI_01 114 | %QcomDevice90020% = DriverInstall, USB\VID_05C6&PID_9002&MI_00 115 | %QcomDevice90021% = DriverInstall, USB\VID_05C6&PID_9002&MI_01 116 | %QcomDevice90030% = DriverInstall, USB\VID_05C6&PID_9003&MI_00 117 | %QcomDevice90031% = DriverInstall, USB\VID_05C6&PID_9003&MI_01 118 | %QcomDevice90032% = DriverInstall, USB\VID_05C6&PID_9003&MI_02 119 | %QcomDevice32001% = DriverInstall, USB\VID_05C6&PID_3200&MI_01 120 | %QcomDevice32002% = DriverInstall, USB\VID_05C6&PID_3200&MI_02 121 | %QcomDevice90040% = DriverInstall, USB\VID_05C6&PID_9004&MI_00 122 | %QcomDevice90050% = DriverInstall, USB\VID_05C6&PID_9005&MI_00 123 | %QcomDevice90060% = DriverInstall, USB\VID_05C6&PID_9006&MI_00 124 | %QcomDevice900A0% = DriverInstall, USB\VID_05C6&PID_900A&MI_00 125 | %QcomDevice900A1% = DriverInstall, USB\VID_05C6&PID_900A&MI_01 126 | %QcomDevice900B0% = DriverInstall, USB\VID_05C6&PID_900B&MI_00 127 | %QcomDevice900C0% = DriverInstall, USB\VID_05C6&PID_900C&MI_00 128 | %QcomDevice900C1% = DriverInstall, USB\VID_05C6&PID_900C&MI_01 129 | %QcomDevice900D0% = DriverInstall, USB\VID_05C6&PID_900D&MI_00 130 | %QcomDevice900D1% = DriverInstall, USB\VID_05C6&PID_900D&MI_01 131 | %QcomDevice900E0% = DriverInstall, USB\VID_05C6&PID_900E 132 | %QcomDevice90120% = DriverInstall, USB\VID_05C6&PID_9012&MI_00 133 | %QcomDevice90130% = DriverInstall, USB\VID_05C6&PID_9013&MI_00 134 | %QcomDevice90160% = DriverInstall, USB\VID_05C6&PID_9016&MI_00 135 | %QcomDevice90162% = DriverInstall, USB\VID_05C6&PID_9016&MI_02 136 | %QcomDevice90170% = DriverInstall, USB\VID_05C6&PID_9017&MI_00 137 | %QcomDevice90172% = DriverInstall, USB\VID_05C6&PID_9017&MI_02 138 | %QcomDevice90180% = DriverInstall, USB\VID_05C6&PID_9018&MI_00 139 | %QcomDevice90183% = DriverInstall, USB\VID_05C6&PID_9018&MI_03 140 | %QcomDevice90191% = DriverInstall, USB\VID_05C6&PID_9019&MI_01 141 | %QcomDevice90192% = DriverInstall, USB\VID_05C6&PID_9019&MI_02 142 | %QcomDevice901C0% = DriverInstall, USB\VID_05C6&PID_901C&MI_00 143 | %QcomDevice91000% = DriverInstall, USB\VID_05C6&PID_9100&MI_00 144 | %QcomDevice91001% = DriverInstall, USB\VID_05C6&PID_9100&MI_01 145 | %QcomDevice91010% = DriverInstall, USB\VID_05C6&PID_9101&MI_00 146 | %QcomDevice91011% = DriverInstall, USB\VID_05C6&PID_9101&MI_01 147 | %QcomDevice91012% = DriverInstall, USB\VID_05C6&PID_9101&MI_02 148 | %QcomDevice91014% = DriverInstall, USB\VID_05C6&PID_9101&MI_04 149 | %QcomDevice91015% = DriverInstall, USB\VID_05C6&PID_9101&MI_05 150 | %QcomDevice94020% = DriverInstall, USB\VID_05C6&PID_9402&MI_00 151 | %QcomDevice94021% = DriverInstall, USB\VID_05C6&PID_9402&MI_01 152 | %QcomDeviceF0051% = DriverInstall, USB\VID_05C6&PID_F005&MI_01 153 | %QcomDevice31991% = DriverInstall, USB\VID_05C6&PID_3199&MI_01 154 | %QcomDevice31992% = DriverInstall, USB\VID_05C6&PID_3199&MI_02 155 | %QcomDevice31993% = DriverInstall, USB\VID_05C6&PID_3199&MI_03 156 | %QcomDevice319A1% = DriverInstall, USB\VID_05C6&PID_319A&MI_01 157 | %QcomDevice319A2% = DriverInstall, USB\VID_05C6&PID_319A&MI_02 158 | %QcomDevice319A3% = DriverInstall, USB\VID_05C6&PID_319A&MI_03 159 | %QcomDeviceF00D% = DriverInstall, USB\VID_05C6&PID_F00D 160 | 161 | 162 | [DriverInstall.NT] 163 | CopyFiles=RiffBoxDccFiles 164 | AddReg=DriverInstall.NT.AddReg 165 | 166 | [DriverInstall.NT.AddReg] 167 | HKR,,NTMPDriver,,qcusbser.sys 168 | HKR,,PortSubClass,1,01 169 | HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" 170 | 171 | [DestinationDirs] 172 | RiffBoxDccFiles=12 173 | DefaultDestDir = 12 174 | 175 | [RiffBoxDccFiles] 176 | qcusbser.sys,,,0x20 177 | 178 | [DriverInstall.NT.Services] 179 | AddService=qcusbser, 0x00000002, RIFF_USBSerialService 180 | 181 | [RIFF_USBSerialService] 182 | DisplayName =%QCUSBSER% 183 | ServiceType =1 184 | StartType =3 185 | ErrorControl =1 186 | ServiceBinary =%12%\qcusbser.sys 187 | 188 | [Strings] 189 | MFGNAME = "RIFF BOX Limited (c), 2012" 190 | QCUSBSER = "Qualcomm USB Device for Legacy Serial Communication" 191 | QcomSrcDisk = "QUALCOMM USB Driver Disk" 192 | QUALCOMM = "Qualcomm Incorporated" 193 | QcomDevice00 = "Qualcomm Diagnostics Interface 3197" 194 | QcomDevice6k = "Qualcomm Diagnostics Interface 6000" 195 | QcomDeviceNMEA = "Qualcomm NMEA Device" 196 | QcomDevice7k = "Qualcomm Diagnostics Interface 7000" 197 | QcomDevice7k1 = "Qualcomm RRDM 7001" 198 | QcomDevice7k3 = "Qualcomm Diagnostics Interface 7001" 199 | QcomDevice70020 = "Qualcomm RRDM 7002" 200 | QcomDevice70023 = "Qualcomm Diagnostics Interface 7002" 201 | QcomDevice70024 = "Qualcomm NMEA 7002" 202 | QcomDevice71010 = "Qualcomm RRDM 7101" 203 | QcomDevice71015 = "Qualcomm Diagnostics Interface 7101" 204 | QcomDevice71020 = "Qualcomm RRDM 7102" 205 | QcomDevice71025 = "Qualcomm Diagnostics Interface 7102" 206 | QcomDevice71026 = "Qualcomm NMEA 7102" 207 | QcomDevice80000 = "Qualcomm HS-USB Diagnostics 8000" 208 | QcomDevice80002 = "Qualcomm HS-USB NMEA 8000" 209 | QcomDevice80010 = "Qualcomm HS-USB Diagnostics 8001" 210 | QcomDevice80012 = "Qualcomm HS-USB NMEA 8001" 211 | QcomDevice80020 = "Qualcomm HS-USB Diagnostics 8002" 212 | QcomDevice80022 = "Qualcomm HS-USB NMEA 8002" 213 | QcomDevice90080 = "Qualcomm HS-USB QDLoader 9008" 214 | QcomDevice90000 = "Qualcomm HS-USB Diagnostics 9000" 215 | QcomDevice90001 = "Qualcomm HS-USB NMEA 9000" 216 | QcomDevice90010 = "Qualcomm HS-USB Diagnostics 9001" 217 | QcomDevice90011 = "Qualcomm HS-USB NMEA 9001" 218 | QcomDevice90020 = "Qualcomm HS-USB Diagnostics 9002" 219 | QcomDevice90021 = "Qualcomm HS-USB NMEA 9002" 220 | QcomDevice90030 = "Qualcomm HS-USB Diagnostics 9003" 221 | QcomDevice90031 = "Qualcomm HS-USB NMEA 9003" 222 | QcomDevice90032 = "Qualcomm HS-USB AT Port 9003" 223 | QcomDevice32001 = "Qualcomm WinMobile Diagnostics 3200" 224 | QcomDevice32002 = "Qualcomm WinMobile NMEA 3200" 225 | QcomDevice90040 = "Qualcomm HS-USB Diagnostics 9004" 226 | QcomDevice90050 = "Qualcomm HS-USB Diagnostics 9005" 227 | QcomDevice90060 = "Qualcomm HS-USB Diagnostics 9006" 228 | QcomDevice900A0 = "Qualcomm HS-USB Diagnostics 900A" 229 | QcomDevice900A1 = "Qualcomm HS-USB NMEA 900A" 230 | QcomDevice900B0 = "Qualcomm HS-USB Diagnostics 900B" 231 | QcomDevice900C0 = "Qualcomm HS-USB Diagnostics 900C" 232 | QcomDevice900C1 = "Qualcomm HS-USB NMEA 900C" 233 | QcomDevice900D0 = "Qualcomm HS-USB Diagnostics 900D" 234 | QcomDevice900D1 = "Qualcomm HS-USB NMEA 900D" 235 | QcomDevice900E0 = "Qualcomm HS-USB Diagnostics 900E" 236 | QcomDevice90120 = "Qualcomm HS-USB Diagnostics 9012" 237 | QcomDevice90130 = "Qualcomm HS-USB Diagnostics 9013" 238 | QcomDevice90160 = "Qualcomm HS-USB Diagnostics 9016" 239 | QcomDevice90162 = "Qualcomm HS-USB NMEA 9016" 240 | QcomDevice90170 = "Qualcomm HS-USB Diagnostics 9017" 241 | QcomDevice90172 = "Qualcomm HS-USB NMEA 9017" 242 | QcomDevice90180 = "Qualcomm HS-USB Android DIAG 9018" 243 | QcomDevice90183 = "Qualcomm HS-USB Android GPS 9018" 244 | QcomDevice90191 = "Qualcomm WinMobile Diagnostics 9019" 245 | QcomDevice90192 = "Qualcomm WinMobile NMEA 9019" 246 | QcomDevice901C0 = "Qualcomm HS-USB Diagnostics 901C" 247 | QcomDevice91000 = "Qualcomm Symbian USB Diagnostics 9100" 248 | QcomDevice91001 = "Qualcomm Symbian USB Trace 9100" 249 | QcomDevice91010 = "Qualcomm Symbian USB Diagnostics 9101" 250 | QcomDevice91011 = "Qualcomm Symbian USB Trace 9101" 251 | QcomDevice91012 = "Qualcomm Symbian USB IP 9101" 252 | QcomDevice91014 = "Qualcomm Symbian USB General Purpose 9101" 253 | QcomDevice91015 = "Qualcomm Symbian USB Shell 9101" 254 | QcomDevice94020 = "Qualcomm HS-USB Diagnostics 9402" 255 | QcomDevice94021 = "Qualcomm HS-USB NMEA 9402" 256 | QcomDeviceF0051 = "Qualcomm HS-USB Diagnostics F005" 257 | QcomDevice31991 = "Qualcomm WinMobile Diagnostics 3199" 258 | QcomDevice31992 = "Qualcomm WinMobile NMEA 3199" 259 | QcomDevice31993 = "Qualcomm WinMobile TRACE 3199" 260 | QcomDevice319A1 = "Qualcomm WinMobile Diagnostics 319A" 261 | QcomDevice319A2 = "Qualcomm WinMobile NMEA 319A" 262 | QcomDevice319A3 = "Qualcomm WinMobile TRACE 319A" 263 | QcomDeviceF00D = "Qualcomm Mary Samsonite Profiling Board" 264 | 265 | -------------------------------------------------------------------------------- /qpst-drivers/qhsusb_dload/Qualcomm_QDLoader_64bit_Driver.inf: -------------------------------------------------------------------------------- 1 | [Version] 2 | Signature="$Windows NT$" 3 | Class=Ports 4 | ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318} 5 | Provider=%MFGNAME% 6 | DriverVer=20/02/2010,1.0.0000.0 7 | 8 | [Manufacturer] 9 | %MFGNAME%=QcomSerialPort, NT, NTamd64 10 | 11 | [DestinationDirs] 12 | DefaultDestDir = 12 13 | 14 | [QcomSerialPort.NT] 15 | %QcomDevice00% = DriverInstall, USB\VID_05C6&PID_3197&MI_01 16 | %QcomDevice6k% = DriverInstall, USB\VID_05C6&PID_6000&MI_01 17 | %QcomDeviceNMEA% = DriverInstall, USB\VID_05C6&PID_6000&MI_02 18 | %QcomDevice7k% = DriverInstall, USB\VID_05C6&PID_7000&MI_01 19 | %QcomDevice7k1% = DriverInstall, USB\VID_05C6&PID_7001&MI_00 20 | %QcomDevice7k3% = DriverInstall, USB\VID_05C6&PID_7001&MI_03 21 | %QcomDevice70020% = DriverInstall, USB\VID_05C6&PID_7002&MI_00 22 | %QcomDevice70023% = DriverInstall, USB\VID_05C6&PID_7002&MI_03 23 | %QcomDevice70024% = DriverInstall, USB\VID_05C6&PID_7002&MI_04 24 | %QcomDevice71010% = DriverInstall, USB\VID_05C6&PID_7101&MI_00 25 | %QcomDevice71015% = DriverInstall, USB\VID_05C6&PID_7101&MI_05 26 | %QcomDevice71020% = DriverInstall, USB\VID_05C6&PID_7102&MI_00 27 | %QcomDevice71025% = DriverInstall, USB\VID_05C6&PID_7102&MI_05 28 | %QcomDevice71026% = DriverInstall, USB\VID_05C6&PID_7102&MI_06 29 | %QcomDevice80000% = DriverInstall, USB\VID_05C6&PID_8000&MI_00 30 | %QcomDevice80002% = DriverInstall, USB\VID_05C6&PID_8000&MI_02 31 | %QcomDevice80010% = DriverInstall, USB\VID_05C6&PID_8001&MI_00 32 | %QcomDevice80012% = DriverInstall, USB\VID_05C6&PID_8001&MI_02 33 | %QcomDevice80020% = DriverInstall, USB\VID_05C6&PID_8002&MI_00 34 | %QcomDevice80022% = DriverInstall, USB\VID_05C6&PID_8002&MI_02 35 | %QcomDevice90080% = DriverInstall, USB\VID_05C6&PID_9008 36 | %QcomDevice90000% = DriverInstall, USB\VID_05C6&PID_9000&MI_00 37 | %QcomDevice90001% = DriverInstall, USB\VID_05C6&PID_9000&MI_01 38 | %QcomDevice90010% = DriverInstall, USB\VID_05C6&PID_9001&MI_00 39 | %QcomDevice90011% = DriverInstall, USB\VID_05C6&PID_9001&MI_01 40 | %QcomDevice90020% = DriverInstall, USB\VID_05C6&PID_9002&MI_00 41 | %QcomDevice90021% = DriverInstall, USB\VID_05C6&PID_9002&MI_01 42 | %QcomDevice90030% = DriverInstall, USB\VID_05C6&PID_9003&MI_00 43 | %QcomDevice90031% = DriverInstall, USB\VID_05C6&PID_9003&MI_01 44 | %QcomDevice90032% = DriverInstall, USB\VID_05C6&PID_9003&MI_02 45 | %QcomDevice32001% = DriverInstall, USB\VID_05C6&PID_3200&MI_01 46 | %QcomDevice32002% = DriverInstall, USB\VID_05C6&PID_3200&MI_02 47 | %QcomDevice90040% = DriverInstall, USB\VID_05C6&PID_9004&MI_00 48 | %QcomDevice90050% = DriverInstall, USB\VID_05C6&PID_9005&MI_00 49 | %QcomDevice90060% = DriverInstall, USB\VID_05C6&PID_9006&MI_00 50 | %QcomDevice900A0% = DriverInstall, USB\VID_05C6&PID_900A&MI_00 51 | %QcomDevice900A1% = DriverInstall, USB\VID_05C6&PID_900A&MI_01 52 | %QcomDevice900B0% = DriverInstall, USB\VID_05C6&PID_900B&MI_00 53 | %QcomDevice900C0% = DriverInstall, USB\VID_05C6&PID_900C&MI_00 54 | %QcomDevice900C1% = DriverInstall, USB\VID_05C6&PID_900C&MI_01 55 | %QcomDevice900D0% = DriverInstall, USB\VID_05C6&PID_900D&MI_00 56 | %QcomDevice900D1% = DriverInstall, USB\VID_05C6&PID_900D&MI_01 57 | %QcomDevice900E0% = DriverInstall, USB\VID_05C6&PID_900E 58 | %QcomDevice90120% = DriverInstall, USB\VID_05C6&PID_9012&MI_00 59 | %QcomDevice90130% = DriverInstall, USB\VID_05C6&PID_9013&MI_00 60 | %QcomDevice90160% = DriverInstall, USB\VID_05C6&PID_9016&MI_00 61 | %QcomDevice90162% = DriverInstall, USB\VID_05C6&PID_9016&MI_02 62 | %QcomDevice90170% = DriverInstall, USB\VID_05C6&PID_9017&MI_00 63 | %QcomDevice90172% = DriverInstall, USB\VID_05C6&PID_9017&MI_02 64 | %QcomDevice90180% = DriverInstall, USB\VID_05C6&PID_9018&MI_00 65 | %QcomDevice90183% = DriverInstall, USB\VID_05C6&PID_9018&MI_03 66 | %QcomDevice90191% = DriverInstall, USB\VID_05C6&PID_9019&MI_01 67 | %QcomDevice90192% = DriverInstall, USB\VID_05C6&PID_9019&MI_02 68 | %QcomDevice901C0% = DriverInstall, USB\VID_05C6&PID_901C&MI_00 69 | %QcomDevice91000% = DriverInstall, USB\VID_05C6&PID_9100&MI_00 70 | %QcomDevice91001% = DriverInstall, USB\VID_05C6&PID_9100&MI_01 71 | %QcomDevice91010% = DriverInstall, USB\VID_05C6&PID_9101&MI_00 72 | %QcomDevice91011% = DriverInstall, USB\VID_05C6&PID_9101&MI_01 73 | %QcomDevice91012% = DriverInstall, USB\VID_05C6&PID_9101&MI_02 74 | %QcomDevice91014% = DriverInstall, USB\VID_05C6&PID_9101&MI_04 75 | %QcomDevice91015% = DriverInstall, USB\VID_05C6&PID_9101&MI_05 76 | %QcomDevice94020% = DriverInstall, USB\VID_05C6&PID_9402&MI_00 77 | %QcomDevice94021% = DriverInstall, USB\VID_05C6&PID_9402&MI_01 78 | %QcomDeviceF0051% = DriverInstall, USB\VID_05C6&PID_F005&MI_01 79 | %QcomDevice31991% = DriverInstall, USB\VID_05C6&PID_3199&MI_01 80 | %QcomDevice31992% = DriverInstall, USB\VID_05C6&PID_3199&MI_02 81 | %QcomDevice31993% = DriverInstall, USB\VID_05C6&PID_3199&MI_03 82 | %QcomDevice319A1% = DriverInstall, USB\VID_05C6&PID_319A&MI_01 83 | %QcomDevice319A2% = DriverInstall, USB\VID_05C6&PID_319A&MI_02 84 | %QcomDevice319A3% = DriverInstall, USB\VID_05C6&PID_319A&MI_03 85 | %QcomDeviceF00D% = DriverInstall, USB\VID_05C6&PID_F00D 86 | 87 | 88 | [QcomSerialPort.NTamd64] 89 | %QcomDevice00% = DriverInstall, USB\VID_05C6&PID_3197&MI_01 90 | %QcomDevice6k% = DriverInstall, USB\VID_05C6&PID_6000&MI_01 91 | %QcomDeviceNMEA% = DriverInstall, USB\VID_05C6&PID_6000&MI_02 92 | %QcomDevice7k% = DriverInstall, USB\VID_05C6&PID_7000&MI_01 93 | %QcomDevice7k1% = DriverInstall, USB\VID_05C6&PID_7001&MI_00 94 | %QcomDevice7k3% = DriverInstall, USB\VID_05C6&PID_7001&MI_03 95 | %QcomDevice70020% = DriverInstall, USB\VID_05C6&PID_7002&MI_00 96 | %QcomDevice70023% = DriverInstall, USB\VID_05C6&PID_7002&MI_03 97 | %QcomDevice70024% = DriverInstall, USB\VID_05C6&PID_7002&MI_04 98 | %QcomDevice71010% = DriverInstall, USB\VID_05C6&PID_7101&MI_00 99 | %QcomDevice71015% = DriverInstall, USB\VID_05C6&PID_7101&MI_05 100 | %QcomDevice71020% = DriverInstall, USB\VID_05C6&PID_7102&MI_00 101 | %QcomDevice71025% = DriverInstall, USB\VID_05C6&PID_7102&MI_05 102 | %QcomDevice71026% = DriverInstall, USB\VID_05C6&PID_7102&MI_06 103 | %QcomDevice80000% = DriverInstall, USB\VID_05C6&PID_8000&MI_00 104 | %QcomDevice80002% = DriverInstall, USB\VID_05C6&PID_8000&MI_02 105 | %QcomDevice80010% = DriverInstall, USB\VID_05C6&PID_8001&MI_00 106 | %QcomDevice80012% = DriverInstall, USB\VID_05C6&PID_8001&MI_02 107 | %QcomDevice80020% = DriverInstall, USB\VID_05C6&PID_8002&MI_00 108 | %QcomDevice80022% = DriverInstall, USB\VID_05C6&PID_8002&MI_02 109 | %QcomDevice90080% = DriverInstall, USB\VID_05C6&PID_9008 110 | %QcomDevice90000% = DriverInstall, USB\VID_05C6&PID_9000&MI_00 111 | %QcomDevice90001% = DriverInstall, USB\VID_05C6&PID_9000&MI_01 112 | %QcomDevice90010% = DriverInstall, USB\VID_05C6&PID_9001&MI_00 113 | %QcomDevice90011% = DriverInstall, USB\VID_05C6&PID_9001&MI_01 114 | %QcomDevice90020% = DriverInstall, USB\VID_05C6&PID_9002&MI_00 115 | %QcomDevice90021% = DriverInstall, USB\VID_05C6&PID_9002&MI_01 116 | %QcomDevice90030% = DriverInstall, USB\VID_05C6&PID_9003&MI_00 117 | %QcomDevice90031% = DriverInstall, USB\VID_05C6&PID_9003&MI_01 118 | %QcomDevice90032% = DriverInstall, USB\VID_05C6&PID_9003&MI_02 119 | %QcomDevice32001% = DriverInstall, USB\VID_05C6&PID_3200&MI_01 120 | %QcomDevice32002% = DriverInstall, USB\VID_05C6&PID_3200&MI_02 121 | %QcomDevice90040% = DriverInstall, USB\VID_05C6&PID_9004&MI_00 122 | %QcomDevice90050% = DriverInstall, USB\VID_05C6&PID_9005&MI_00 123 | %QcomDevice90060% = DriverInstall, USB\VID_05C6&PID_9006&MI_00 124 | %QcomDevice900A0% = DriverInstall, USB\VID_05C6&PID_900A&MI_00 125 | %QcomDevice900A1% = DriverInstall, USB\VID_05C6&PID_900A&MI_01 126 | %QcomDevice900B0% = DriverInstall, USB\VID_05C6&PID_900B&MI_00 127 | %QcomDevice900C0% = DriverInstall, USB\VID_05C6&PID_900C&MI_00 128 | %QcomDevice900C1% = DriverInstall, USB\VID_05C6&PID_900C&MI_01 129 | %QcomDevice900D0% = DriverInstall, USB\VID_05C6&PID_900D&MI_00 130 | %QcomDevice900D1% = DriverInstall, USB\VID_05C6&PID_900D&MI_01 131 | %QcomDevice900E0% = DriverInstall, USB\VID_05C6&PID_900E 132 | %QcomDevice90120% = DriverInstall, USB\VID_05C6&PID_9012&MI_00 133 | %QcomDevice90130% = DriverInstall, USB\VID_05C6&PID_9013&MI_00 134 | %QcomDevice90160% = DriverInstall, USB\VID_05C6&PID_9016&MI_00 135 | %QcomDevice90162% = DriverInstall, USB\VID_05C6&PID_9016&MI_02 136 | %QcomDevice90170% = DriverInstall, USB\VID_05C6&PID_9017&MI_00 137 | %QcomDevice90172% = DriverInstall, USB\VID_05C6&PID_9017&MI_02 138 | %QcomDevice90180% = DriverInstall, USB\VID_05C6&PID_9018&MI_00 139 | %QcomDevice90183% = DriverInstall, USB\VID_05C6&PID_9018&MI_03 140 | %QcomDevice90191% = DriverInstall, USB\VID_05C6&PID_9019&MI_01 141 | %QcomDevice90192% = DriverInstall, USB\VID_05C6&PID_9019&MI_02 142 | %QcomDevice901C0% = DriverInstall, USB\VID_05C6&PID_901C&MI_00 143 | %QcomDevice91000% = DriverInstall, USB\VID_05C6&PID_9100&MI_00 144 | %QcomDevice91001% = DriverInstall, USB\VID_05C6&PID_9100&MI_01 145 | %QcomDevice91010% = DriverInstall, USB\VID_05C6&PID_9101&MI_00 146 | %QcomDevice91011% = DriverInstall, USB\VID_05C6&PID_9101&MI_01 147 | %QcomDevice91012% = DriverInstall, USB\VID_05C6&PID_9101&MI_02 148 | %QcomDevice91014% = DriverInstall, USB\VID_05C6&PID_9101&MI_04 149 | %QcomDevice91015% = DriverInstall, USB\VID_05C6&PID_9101&MI_05 150 | %QcomDevice94020% = DriverInstall, USB\VID_05C6&PID_9402&MI_00 151 | %QcomDevice94021% = DriverInstall, USB\VID_05C6&PID_9402&MI_01 152 | %QcomDeviceF0051% = DriverInstall, USB\VID_05C6&PID_F005&MI_01 153 | %QcomDevice31991% = DriverInstall, USB\VID_05C6&PID_3199&MI_01 154 | %QcomDevice31992% = DriverInstall, USB\VID_05C6&PID_3199&MI_02 155 | %QcomDevice31993% = DriverInstall, USB\VID_05C6&PID_3199&MI_03 156 | %QcomDevice319A1% = DriverInstall, USB\VID_05C6&PID_319A&MI_01 157 | %QcomDevice319A2% = DriverInstall, USB\VID_05C6&PID_319A&MI_02 158 | %QcomDevice319A3% = DriverInstall, USB\VID_05C6&PID_319A&MI_03 159 | %QcomDeviceF00D% = DriverInstall, USB\VID_05C6&PID_F00D 160 | 161 | 162 | [DriverInstall.NT] 163 | CopyFiles=RiffBoxDccFiles 164 | AddReg=DriverInstall.NT.AddReg 165 | 166 | [DriverInstall.NT.AddReg] 167 | HKR,,NTMPDriver,,qcusbser.sys 168 | HKR,,PortSubClass,1,01 169 | HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" 170 | 171 | [DestinationDirs] 172 | RiffBoxDccFiles=12 173 | DefaultDestDir = 12 174 | 175 | [RiffBoxDccFiles] 176 | qcusbser.sys,,,0x20 177 | 178 | [DriverInstall.NT.Services] 179 | AddService=qcusbser, 0x00000002, RIFF_USBSerialService 180 | 181 | [RIFF_USBSerialService] 182 | DisplayName =%QCUSBSER% 183 | ServiceType =1 184 | StartType =3 185 | ErrorControl =1 186 | ServiceBinary =%12%\qcusbser.sys 187 | 188 | [Strings] 189 | MFGNAME = "RIFF BOX Limited (c), 2012" 190 | QCUSBSER = "Qualcomm USB Device for Legacy Serial Communication" 191 | QcomSrcDisk = "QUALCOMM USB Driver Disk" 192 | QUALCOMM = "Qualcomm Incorporated" 193 | QcomDevice00 = "Qualcomm Diagnostics Interface 3197" 194 | QcomDevice6k = "Qualcomm Diagnostics Interface 6000" 195 | QcomDeviceNMEA = "Qualcomm NMEA Device" 196 | QcomDevice7k = "Qualcomm Diagnostics Interface 7000" 197 | QcomDevice7k1 = "Qualcomm RRDM 7001" 198 | QcomDevice7k3 = "Qualcomm Diagnostics Interface 7001" 199 | QcomDevice70020 = "Qualcomm RRDM 7002" 200 | QcomDevice70023 = "Qualcomm Diagnostics Interface 7002" 201 | QcomDevice70024 = "Qualcomm NMEA 7002" 202 | QcomDevice71010 = "Qualcomm RRDM 7101" 203 | QcomDevice71015 = "Qualcomm Diagnostics Interface 7101" 204 | QcomDevice71020 = "Qualcomm RRDM 7102" 205 | QcomDevice71025 = "Qualcomm Diagnostics Interface 7102" 206 | QcomDevice71026 = "Qualcomm NMEA 7102" 207 | QcomDevice80000 = "Qualcomm HS-USB Diagnostics 8000" 208 | QcomDevice80002 = "Qualcomm HS-USB NMEA 8000" 209 | QcomDevice80010 = "Qualcomm HS-USB Diagnostics 8001" 210 | QcomDevice80012 = "Qualcomm HS-USB NMEA 8001" 211 | QcomDevice80020 = "Qualcomm HS-USB Diagnostics 8002" 212 | QcomDevice80022 = "Qualcomm HS-USB NMEA 8002" 213 | QcomDevice90080 = "Qualcomm HS-USB QDLoader 9008" 214 | QcomDevice90000 = "Qualcomm HS-USB Diagnostics 9000" 215 | QcomDevice90001 = "Qualcomm HS-USB NMEA 9000" 216 | QcomDevice90010 = "Qualcomm HS-USB Diagnostics 9001" 217 | QcomDevice90011 = "Qualcomm HS-USB NMEA 9001" 218 | QcomDevice90020 = "Qualcomm HS-USB Diagnostics 9002" 219 | QcomDevice90021 = "Qualcomm HS-USB NMEA 9002" 220 | QcomDevice90030 = "Qualcomm HS-USB Diagnostics 9003" 221 | QcomDevice90031 = "Qualcomm HS-USB NMEA 9003" 222 | QcomDevice90032 = "Qualcomm HS-USB AT Port 9003" 223 | QcomDevice32001 = "Qualcomm WinMobile Diagnostics 3200" 224 | QcomDevice32002 = "Qualcomm WinMobile NMEA 3200" 225 | QcomDevice90040 = "Qualcomm HS-USB Diagnostics 9004" 226 | QcomDevice90050 = "Qualcomm HS-USB Diagnostics 9005" 227 | QcomDevice90060 = "Qualcomm HS-USB Diagnostics 9006" 228 | QcomDevice900A0 = "Qualcomm HS-USB Diagnostics 900A" 229 | QcomDevice900A1 = "Qualcomm HS-USB NMEA 900A" 230 | QcomDevice900B0 = "Qualcomm HS-USB Diagnostics 900B" 231 | QcomDevice900C0 = "Qualcomm HS-USB Diagnostics 900C" 232 | QcomDevice900C1 = "Qualcomm HS-USB NMEA 900C" 233 | QcomDevice900D0 = "Qualcomm HS-USB Diagnostics 900D" 234 | QcomDevice900D1 = "Qualcomm HS-USB NMEA 900D" 235 | QcomDevice900E0 = "Qualcomm HS-USB Diagnostics 900E" 236 | QcomDevice90120 = "Qualcomm HS-USB Diagnostics 9012" 237 | QcomDevice90130 = "Qualcomm HS-USB Diagnostics 9013" 238 | QcomDevice90160 = "Qualcomm HS-USB Diagnostics 9016" 239 | QcomDevice90162 = "Qualcomm HS-USB NMEA 9016" 240 | QcomDevice90170 = "Qualcomm HS-USB Diagnostics 9017" 241 | QcomDevice90172 = "Qualcomm HS-USB NMEA 9017" 242 | QcomDevice90180 = "Qualcomm HS-USB Android DIAG 9018" 243 | QcomDevice90183 = "Qualcomm HS-USB Android GPS 9018" 244 | QcomDevice90191 = "Qualcomm WinMobile Diagnostics 9019" 245 | QcomDevice90192 = "Qualcomm WinMobile NMEA 9019" 246 | QcomDevice901C0 = "Qualcomm HS-USB Diagnostics 901C" 247 | QcomDevice91000 = "Qualcomm Symbian USB Diagnostics 9100" 248 | QcomDevice91001 = "Qualcomm Symbian USB Trace 9100" 249 | QcomDevice91010 = "Qualcomm Symbian USB Diagnostics 9101" 250 | QcomDevice91011 = "Qualcomm Symbian USB Trace 9101" 251 | QcomDevice91012 = "Qualcomm Symbian USB IP 9101" 252 | QcomDevice91014 = "Qualcomm Symbian USB General Purpose 9101" 253 | QcomDevice91015 = "Qualcomm Symbian USB Shell 9101" 254 | QcomDevice94020 = "Qualcomm HS-USB Diagnostics 9402" 255 | QcomDevice94021 = "Qualcomm HS-USB NMEA 9402" 256 | QcomDeviceF0051 = "Qualcomm HS-USB Diagnostics F005" 257 | QcomDevice31991 = "Qualcomm WinMobile Diagnostics 3199" 258 | QcomDevice31992 = "Qualcomm WinMobile NMEA 3199" 259 | QcomDevice31993 = "Qualcomm WinMobile TRACE 3199" 260 | QcomDevice319A1 = "Qualcomm WinMobile Diagnostics 319A" 261 | QcomDevice319A2 = "Qualcomm WinMobile NMEA 319A" 262 | QcomDevice319A3 = "Qualcomm WinMobile TRACE 319A" 263 | QcomDeviceF00D = "Qualcomm Mary Samsonite Profiling Board" 264 | 265 | -------------------------------------------------------------------------------- /qpst-drivers/qhsusb_dload/qcusbser.sys: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jareddantis/unbrick_8960/64804022a2daad2e741cb202257a6db558079453/qpst-drivers/qhsusb_dload/qcusbser.sys -------------------------------------------------------------------------------- /qpst-drivers/x86/qcCoInstaller.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jareddantis/unbrick_8960/64804022a2daad2e741cb202257a6db558079453/qpst-drivers/x86/qcCoInstaller.dll -------------------------------------------------------------------------------- /qpst-drivers/x86/qcser.inf: -------------------------------------------------------------------------------- 1 | ; Windows Vista Virtual Serial Port Setup File 2 | ; Copyright (c) 2010 Qualcomm Incorporated 3 | ; Manufacturer: Qualcomm Incorporated 4 | ; 5 | 6 | [Version] 7 | signature = "$WINDOWS NT$" 8 | Class = Ports 9 | Provider = %QUALCOMM% 10 | ClassGuid = {4D36E978-E325-11CE-BFC1-08002BE10318} 11 | DriverVer = 09/26/2011,2.0.8.8 12 | Catalogfile= qcusbser.cat 13 | 14 | [ControlFlags] 15 | ExcludeFromSelect = * 16 | 17 | [Manufacturer] 18 | %QUALCOMM% = QcomSerialPort, NTia64, NTamd64 19 | 20 | [SourceDisksNames] 21 | 1000 = %QcomSrcDisk%,"",, 22 | 23 | [SourceDisksFiles] 24 | qcusbser.sys = 1000 25 | qcCoInstaller.dll = 1000 26 | 27 | [QcomSerialPort] 28 | %QcomDevice00% = QportInstall00, USB\VID_05C6&PID_3197&MI_01 29 | %QcomDevice6k% = QportInstall00, USB\VID_05C6&PID_6000&MI_01 30 | %QcomDeviceNMEA% = QportInstall00, USB\VID_05C6&PID_6000&MI_02 31 | %QcomDevice7k% = QportInstall00, USB\VID_05C6&PID_7000&MI_01 32 | %QcomDevice7k1% = QportInstall00, USB\VID_05C6&PID_7001&MI_00 33 | %QcomDevice7k3% = QportInstall00, USB\VID_05C6&PID_7001&MI_03 34 | %QcomDevice70020% = QportInstall00, USB\VID_05C6&PID_7002&MI_00 35 | %QcomDevice70023% = QportInstall00, USB\VID_05C6&PID_7002&MI_03 36 | %QcomDevice70024% = QportInstall00, USB\VID_05C6&PID_7002&MI_04 37 | %QcomDevice71010% = QportInstall00, USB\VID_05C6&PID_7101&MI_00 38 | %QcomDevice71015% = QportInstall00, USB\VID_05C6&PID_7101&MI_05 39 | %QcomDevice71020% = QportInstall00, USB\VID_05C6&PID_7102&MI_00 40 | %QcomDevice71025% = QportInstall00, USB\VID_05C6&PID_7102&MI_05 41 | %QcomDevice71026% = QportInstall00, USB\VID_05C6&PID_7102&MI_06 42 | %QcomDevice80000% = QportInstall00, USB\VID_05C6&PID_8000&MI_00 43 | %QcomDevice80002% = QportInstall00, USB\VID_05C6&PID_8000&MI_02 44 | %QcomDevice80010% = QportInstall00, USB\VID_05C6&PID_8001&MI_00 45 | %QcomDevice80012% = QportInstall00, USB\VID_05C6&PID_8001&MI_02 46 | %QcomDevice80020% = QportInstall00, USB\VID_05C6&PID_8002&MI_00 47 | %QcomDevice80022% = QportInstall00, USB\VID_05C6&PID_8002&MI_02 48 | %QcomDevice90080% = QportInstall00, USB\VID_05C6&PID_9008 49 | %QcomDevice90000% = QportInstall00, USB\VID_05C6&PID_9000&MI_00 50 | %QcomDevice90001% = QportInstall00, USB\VID_05C6&PID_9000&MI_01 51 | %QcomDevice90010% = QportInstall00, USB\VID_05C6&PID_9001&MI_00 52 | %QcomDevice90011% = QportInstall00, USB\VID_05C6&PID_9001&MI_01 53 | %QcomDevice90020% = QportInstall00, USB\VID_05C6&PID_9002&MI_00 54 | %QcomDevice90021% = QportInstall00, USB\VID_05C6&PID_9002&MI_01 55 | %QcomDevice90030% = QportInstall00, USB\VID_05C6&PID_9003&MI_00 56 | %QcomDevice90031% = QportInstall00, USB\VID_05C6&PID_9003&MI_01 57 | %QcomDevice90032% = QportInstall00, USB\VID_05C6&PID_9003&MI_02 58 | %QcomDevice32001% = QportInstall00, USB\VID_05C6&PID_3200&MI_01 59 | %QcomDevice32002% = QportInstall00, USB\VID_05C6&PID_3200&MI_02 60 | %QcomDevice90040% = QportInstall00, USB\VID_05C6&PID_9004&MI_00 61 | %QcomDevice90050% = QportInstall00, USB\VID_05C6&PID_9005&MI_00 62 | %QcomDevice90060% = QportInstall00, USB\VID_05C6&PID_9006&MI_00 63 | %QcomDevice900A0% = QportInstall00, USB\VID_05C6&PID_900A&MI_00 64 | %QcomDevice900A1% = QportInstall00, USB\VID_05C6&PID_900A&MI_01 65 | %QcomDevice900B0% = QportInstall00, USB\VID_05C6&PID_900B&MI_00 66 | %QcomDevice900C0% = QportInstall00, USB\VID_05C6&PID_900C&MI_00 67 | %QcomDevice900C1% = QportInstall00, USB\VID_05C6&PID_900C&MI_01 68 | %QcomDevice900D0% = QportInstall00, USB\VID_05C6&PID_900D&MI_00 69 | %QcomDevice900D1% = QportInstall00, USB\VID_05C6&PID_900D&MI_01 70 | %QcomDevice900E0% = QportInstall00, USB\VID_05C6&PID_900E 71 | %QcomDevice900F0% = QportInstall00, USB\VID_05C6&PID_900F&MI_00 72 | %QcomDevice900F1% = QportInstall00, USB\VID_05C6&PID_900F&MI_01 73 | %QcomDevice90100% = QportInstall00, USB\VID_05C6&PID_9010&MI_00 74 | %QcomDevice90101% = QportInstall00, USB\VID_05C6&PID_9010&MI_01 75 | %QcomDevice90110% = QportInstall00, USB\VID_05C6&PID_9011&MI_00 76 | %QcomDevice90111% = QportInstall00, USB\VID_05C6&PID_9011&MI_01 77 | %QcomDevice90120% = QportInstall00, USB\VID_05C6&PID_9012&MI_00 78 | %QcomDevice90130% = QportInstall00, USB\VID_05C6&PID_9013&MI_00 79 | %QcomDevice90160% = QportInstall00, USB\VID_05C6&PID_9016&MI_00 80 | %QcomDevice90162% = QportInstall00, USB\VID_05C6&PID_9016&MI_02 81 | %QcomDevice90170% = QportInstall00, USB\VID_05C6&PID_9017&MI_00 82 | %QcomDevice90172% = QportInstall00, USB\VID_05C6&PID_9017&MI_02 83 | %QcomDevice90180% = QportInstall00, USB\VID_05C6&PID_9018&MI_00 84 | %QcomDevice90183% = QportInstall00, USB\VID_05C6&PID_9018&MI_03 85 | %QcomDevice90191% = QportInstall00, USB\VID_05C6&PID_9019&MI_01 86 | %QcomDevice90192% = QportInstall00, USB\VID_05C6&PID_9019&MI_02 87 | %QcomDevice901B1% = QportInstall00, USB\VID_05C6&PID_901B&MI_01 88 | %QcomDevice901C0% = QportInstall00, USB\VID_05C6&PID_901C&MI_00 89 | %QcomDevice90200% = QportInstall00, USB\VID_05C6&PID_9020&MI_00 90 | %QcomDevice90203% = QportInstall00, USB\VID_05C6&PID_9020&MI_03 91 | %QcomDevice90210% = QportInstall00, USB\VID_05C6&PID_9021&MI_00 92 | %QcomDevice90220% = QportInstall00, USB\VID_05C6&PID_9022&MI_00 93 | %QcomDevice901D0% = QportInstall00, USB\VID_05C6&PID_901D&MI_00 94 | %QcomDevice901F0% = QportInstall00, USB\VID_05C6&PID_901F&MI_00 95 | %QcomDevice90250% = QportInstall00, USB\VID_05C6&PID_9025&MI_00 96 | ;%QcomDevice90253% = QportInstall00, USB\VID_05C6&PID_9025&MI_03 97 | %QcomDevice90260% = QportInstall00, USB\VID_05C6&PID_9026&MI_00 98 | ;%QcomDevice90262% = QportInstall00, USB\VID_05C6&PID_9026&MI_02 99 | %QcomDevice90280% = QportInstall00, USB\VID_05C6&PID_9028&MI_00 100 | %QcomDevice90281% = QportInstall00, USB\VID_05C6&PID_9028&MI_01 101 | %QcomDevice90290% = QportInstall00, USB\VID_05C6&PID_9029&MI_00 102 | %QcomDevice90292% = QportInstall00, USB\VID_05C6&PID_9029&MI_02 103 | %QcomDevice902C2% = QportInstall00, USB\VID_05C6&PID_902C&MI_02 104 | %QcomDevice902D2% = QportInstall00, USB\VID_05C6&PID_902D&MI_02 105 | %QcomDevice902E2% = QportInstall00, USB\VID_05C6&PID_902E&MI_02 106 | %QcomDevice902E4% = QportInstall00, USB\VID_05C6&PID_902E&MI_04 107 | %QcomDevice902F2% = QportInstall00, USB\VID_05C6&PID_902F&MI_02 108 | %QcomDevice90303% = QportInstall00, USB\VID_05C6&PID_9030&MI_03 109 | %QcomDevice90310% = QportInstall00, USB\VID_05C6&PID_9031&MI_00 110 | %QcomDevice90311% = QportInstall00, USB\VID_05C6&PID_9031&MI_01 111 | %QcomDevice90314% = QportInstall00, USB\VID_05C6&PID_9031&MI_04 112 | %QcomDevice90320% = QportInstall00, USB\VID_05C6&PID_9032&MI_00 113 | %QcomDevice90321% = QportInstall00, USB\VID_05C6&PID_9032&MI_01 114 | %QcomDevice90323% = QportInstall00, USB\VID_05C6&PID_9032&MI_03 115 | %QcomDevice90330% = QportInstall00, USB\VID_05C6&PID_9033&MI_00 116 | %QcomDevice90331% = QportInstall00, USB\VID_05C6&PID_9033&MI_01 117 | %QcomDevice90340% = QportInstall00, USB\VID_05C6&PID_9034&MI_00 118 | %QcomDevice90341% = QportInstall00, USB\VID_05C6&PID_9034&MI_01 119 | %QcomDevice90350% = QportInstall00, USB\VID_05C6&PID_9035&MI_00 120 | %QcomDevice90351% = QportInstall00, USB\VID_05C6&PID_9035&MI_01 121 | %QcomDevice90360% = QportInstall00, USB\VID_05C6&PID_9036&MI_00 122 | %QcomDevice90361% = QportInstall00, USB\VID_05C6&PID_9036&MI_01 123 | %QcomDevice90370% = QportInstall00, USB\VID_05C6&PID_9037&MI_00 124 | %QcomDevice90371% = QportInstall00, USB\VID_05C6&PID_9037&MI_01 125 | %QcomDevice90380% = QportInstall00, USB\VID_05C6&PID_9038&MI_00 126 | %QcomDevice90381% = QportInstall00, USB\VID_05C6&PID_9038&MI_01 127 | %QcomDevice903A1% = QportInstall00, USB\VID_05C6&PID_903A&MI_01 128 | %QcomDevice903B0% = QportInstall00, USB\VID_05C6&PID_903B&MI_00 129 | %QcomDevice903B1% = QportInstall00, USB\VID_05C6&PID_903B&MI_01 130 | %QcomDevice903C0% = QportInstall00, USB\VID_05C6&PID_903C&MI_00 131 | %QcomDevice903C1% = QportInstall00, USB\VID_05C6&PID_903C&MI_01 132 | %QcomDevice903D0% = QportInstall00, USB\VID_05C6&PID_903D&MI_00 133 | %QcomDevice903E0% = QportInstall00, USB\VID_05C6&PID_903E&MI_00 134 | %QcomDevice903F1% = QportInstall00, USB\VID_05C6&PID_903F&MI_01 135 | %QcomDevice903F2% = QportInstall00, USB\VID_05C6&PID_903F&MI_02 136 | %QcomDevice90401% = QportInstall00, USB\VID_05C6&PID_9040&MI_01 137 | %QcomDevice90402% = QportInstall00, USB\VID_05C6&PID_9040&MI_02 138 | %QcomDevice90412% = QportInstall00, USB\VID_05C6&PID_9041&MI_02 139 | %QcomDevice90413% = QportInstall00, USB\VID_05C6&PID_9041&MI_03 140 | %QcomDevice90422% = QportInstall00, USB\VID_05C6&PID_9042&MI_02 141 | %QcomDevice90423% = QportInstall00, USB\VID_05C6&PID_9042&MI_03 142 | %QcomDevice90430% = QportInstall00, USB\VID_05C6&PID_9043&MI_00 143 | %QcomDevice90431% = QportInstall00, USB\VID_05C6&PID_9043&MI_01 144 | %QcomDevice90440% = QportInstall00, USB\VID_05C6&PID_9044&MI_00 145 | %QcomDevice90441% = QportInstall00, USB\VID_05C6&PID_9044&MI_01 146 | %QcomDevice90450% = QportInstall00, USB\VID_05C6&PID_9045&MI_00 147 | %QcomDevice90451% = QportInstall00, USB\VID_05C6&PID_9045&MI_01 148 | %QcomDevice91000% = QportInstall00, USB\VID_05C6&PID_9100&MI_00 149 | %QcomDevice91001% = QportInstall00, USB\VID_05C6&PID_9100&MI_01 150 | %QcomDevice91010% = QportInstall00, USB\VID_05C6&PID_9101&MI_00 151 | %QcomDevice91011% = QportInstall00, USB\VID_05C6&PID_9101&MI_01 152 | %QcomDevice91012% = QportInstall00, USB\VID_05C6&PID_9101&MI_02 153 | %QcomDevice91014% = QportInstall00, USB\VID_05C6&PID_9101&MI_04 154 | %QcomDevice91015% = QportInstall00, USB\VID_05C6&PID_9101&MI_05 155 | %QcomDevice94020% = QportInstall00, USB\VID_05C6&PID_9402&MI_00 156 | %QcomDevice94021% = QportInstall00, USB\VID_05C6&PID_9402&MI_01 157 | %QcomDevice94040% = QportInstall00, USB\VID_05C6&PID_9404&MI_00 158 | %QcomDevice94041% = QportInstall00, USB\VID_05C6&PID_9404&MI_01 159 | %QcomDeviceF0051% = QportInstall00, USB\VID_05C6&PID_F005&MI_01 160 | %QcomDevice31991% = QportInstall00, USB\VID_05C6&PID_3199&MI_01 161 | %QcomDevice31992% = QportInstall00, USB\VID_05C6&PID_3199&MI_02 162 | %QcomDevice31993% = QportInstall00, USB\VID_05C6&PID_3199&MI_03 163 | %QcomDevice319A1% = QportInstall00, USB\VID_05C6&PID_319A&MI_01 164 | %QcomDevice319A2% = QportInstall00, USB\VID_05C6&PID_319A&MI_02 165 | %QcomDevice319A3% = QportInstall00, USB\VID_05C6&PID_319A&MI_03 166 | %QcomDevice319B0% = QportInstall00, USB\VID_05C6&PID_319B&MI_00 167 | %QcomDevice319B2% = QportInstall00, USB\VID_05C6&PID_319B&MI_02 168 | %QcomDevice319B3% = QportInstall00, USB\VID_05C6&PID_319B&MI_03 169 | %QcomDeviceF00D% = QportInstall00, USB\VID_05C6&PID_F00D 170 | 171 | [QcomSerialPort.NTia64] 172 | %QcomDevice00% = QportInstall00, USB\VID_05C6&PID_3197&MI_01 173 | %QcomDevice6k% = QportInstall00, USB\VID_05C6&PID_6000&MI_01 174 | %QcomDeviceNMEA% = QportInstall00, USB\VID_05C6&PID_6000&MI_02 175 | %QcomDevice7k% = QportInstall00, USB\VID_05C6&PID_7000&MI_01 176 | %QcomDevice7k1% = QportInstall00, USB\VID_05C6&PID_7001&MI_00 177 | %QcomDevice7k3% = QportInstall00, USB\VID_05C6&PID_7001&MI_03 178 | %QcomDevice70020% = QportInstall00, USB\VID_05C6&PID_7002&MI_00 179 | %QcomDevice70023% = QportInstall00, USB\VID_05C6&PID_7002&MI_03 180 | %QcomDevice70024% = QportInstall00, USB\VID_05C6&PID_7002&MI_04 181 | %QcomDevice71010% = QportInstall00, USB\VID_05C6&PID_7101&MI_00 182 | %QcomDevice71015% = QportInstall00, USB\VID_05C6&PID_7101&MI_05 183 | %QcomDevice71020% = QportInstall00, USB\VID_05C6&PID_7102&MI_00 184 | %QcomDevice71025% = QportInstall00, USB\VID_05C6&PID_7102&MI_05 185 | %QcomDevice71026% = QportInstall00, USB\VID_05C6&PID_7102&MI_06 186 | %QcomDevice80000% = QportInstall00, USB\VID_05C6&PID_8000&MI_00 187 | %QcomDevice80002% = QportInstall00, USB\VID_05C6&PID_8000&MI_02 188 | %QcomDevice80010% = QportInstall00, USB\VID_05C6&PID_8001&MI_00 189 | %QcomDevice80012% = QportInstall00, USB\VID_05C6&PID_8001&MI_02 190 | %QcomDevice80020% = QportInstall00, USB\VID_05C6&PID_8002&MI_00 191 | %QcomDevice80022% = QportInstall00, USB\VID_05C6&PID_8002&MI_02 192 | %QcomDevice90080% = QportInstall00, USB\VID_05C6&PID_9008 193 | %QcomDevice90000% = QportInstall00, USB\VID_05C6&PID_9000&MI_00 194 | %QcomDevice90001% = QportInstall00, USB\VID_05C6&PID_9000&MI_01 195 | %QcomDevice90010% = QportInstall00, USB\VID_05C6&PID_9001&MI_00 196 | %QcomDevice90011% = QportInstall00, USB\VID_05C6&PID_9001&MI_01 197 | %QcomDevice90020% = QportInstall00, USB\VID_05C6&PID_9002&MI_00 198 | %QcomDevice90021% = QportInstall00, USB\VID_05C6&PID_9002&MI_01 199 | %QcomDevice90030% = QportInstall00, USB\VID_05C6&PID_9003&MI_00 200 | %QcomDevice90031% = QportInstall00, USB\VID_05C6&PID_9003&MI_01 201 | %QcomDevice90032% = QportInstall00, USB\VID_05C6&PID_9003&MI_02 202 | %QcomDevice32001% = QportInstall00, USB\VID_05C6&PID_3200&MI_01 203 | %QcomDevice32002% = QportInstall00, USB\VID_05C6&PID_3200&MI_02 204 | %QcomDevice90040% = QportInstall00, USB\VID_05C6&PID_9004&MI_00 205 | %QcomDevice90050% = QportInstall00, USB\VID_05C6&PID_9005&MI_00 206 | %QcomDevice90060% = QportInstall00, USB\VID_05C6&PID_9006&MI_00 207 | %QcomDevice900A0% = QportInstall00, USB\VID_05C6&PID_900A&MI_00 208 | %QcomDevice900A1% = QportInstall00, USB\VID_05C6&PID_900A&MI_01 209 | %QcomDevice900B0% = QportInstall00, USB\VID_05C6&PID_900B&MI_00 210 | %QcomDevice900C0% = QportInstall00, USB\VID_05C6&PID_900C&MI_00 211 | %QcomDevice900C1% = QportInstall00, USB\VID_05C6&PID_900C&MI_01 212 | %QcomDevice900D0% = QportInstall00, USB\VID_05C6&PID_900D&MI_00 213 | %QcomDevice900D1% = QportInstall00, USB\VID_05C6&PID_900D&MI_01 214 | %QcomDevice900E0% = QportInstall00, USB\VID_05C6&PID_900E 215 | %QcomDevice900F0% = QportInstall00, USB\VID_05C6&PID_900F&MI_00 216 | %QcomDevice900F1% = QportInstall00, USB\VID_05C6&PID_900F&MI_01 217 | %QcomDevice90100% = QportInstall00, USB\VID_05C6&PID_9010&MI_00 218 | %QcomDevice90101% = QportInstall00, USB\VID_05C6&PID_9010&MI_01 219 | %QcomDevice90110% = QportInstall00, USB\VID_05C6&PID_9011&MI_00 220 | %QcomDevice90111% = QportInstall00, USB\VID_05C6&PID_9011&MI_01 221 | %QcomDevice90120% = QportInstall00, USB\VID_05C6&PID_9012&MI_00 222 | %QcomDevice90130% = QportInstall00, USB\VID_05C6&PID_9013&MI_00 223 | %QcomDevice90160% = QportInstall00, USB\VID_05C6&PID_9016&MI_00 224 | %QcomDevice90162% = QportInstall00, USB\VID_05C6&PID_9016&MI_02 225 | %QcomDevice90170% = QportInstall00, USB\VID_05C6&PID_9017&MI_00 226 | %QcomDevice90172% = QportInstall00, USB\VID_05C6&PID_9017&MI_02 227 | %QcomDevice90180% = QportInstall00, USB\VID_05C6&PID_9018&MI_00 228 | %QcomDevice90183% = QportInstall00, USB\VID_05C6&PID_9018&MI_03 229 | %QcomDevice90191% = QportInstall00, USB\VID_05C6&PID_9019&MI_01 230 | %QcomDevice90192% = QportInstall00, USB\VID_05C6&PID_9019&MI_02 231 | %QcomDevice901B1% = QportInstall00, USB\VID_05C6&PID_901B&MI_01 232 | %QcomDevice901C0% = QportInstall00, USB\VID_05C6&PID_901C&MI_00 233 | %QcomDevice90200% = QportInstall00, USB\VID_05C6&PID_9020&MI_00 234 | %QcomDevice90203% = QportInstall00, USB\VID_05C6&PID_9020&MI_03 235 | %QcomDevice90210% = QportInstall00, USB\VID_05C6&PID_9021&MI_00 236 | %QcomDevice90220% = QportInstall00, USB\VID_05C6&PID_9022&MI_00 237 | %QcomDevice901D0% = QportInstall00, USB\VID_05C6&PID_901D&MI_00 238 | %QcomDevice901F0% = QportInstall00, USB\VID_05C6&PID_901F&MI_00 239 | %QcomDevice90250% = QportInstall00, USB\VID_05C6&PID_9025&MI_00 240 | ;%QcomDevice90253% = QportInstall00, USB\VID_05C6&PID_9025&MI_03 241 | %QcomDevice90260% = QportInstall00, USB\VID_05C6&PID_9026&MI_00 242 | ;%QcomDevice90262% = QportInstall00, USB\VID_05C6&PID_9026&MI_02 243 | %QcomDevice90280% = QportInstall00, USB\VID_05C6&PID_9028&MI_00 244 | %QcomDevice90281% = QportInstall00, USB\VID_05C6&PID_9028&MI_01 245 | %QcomDevice90290% = QportInstall00, USB\VID_05C6&PID_9029&MI_00 246 | %QcomDevice90292% = QportInstall00, USB\VID_05C6&PID_9029&MI_02 247 | %QcomDevice902C2% = QportInstall00, USB\VID_05C6&PID_902C&MI_02 248 | %QcomDevice902D2% = QportInstall00, USB\VID_05C6&PID_902D&MI_02 249 | %QcomDevice902E2% = QportInstall00, USB\VID_05C6&PID_902E&MI_02 250 | %QcomDevice902E4% = QportInstall00, USB\VID_05C6&PID_902E&MI_04 251 | %QcomDevice902F2% = QportInstall00, USB\VID_05C6&PID_902F&MI_02 252 | %QcomDevice90303% = QportInstall00, USB\VID_05C6&PID_9030&MI_03 253 | %QcomDevice90310% = QportInstall00, USB\VID_05C6&PID_9031&MI_00 254 | %QcomDevice90311% = QportInstall00, USB\VID_05C6&PID_9031&MI_01 255 | %QcomDevice90314% = QportInstall00, USB\VID_05C6&PID_9031&MI_04 256 | %QcomDevice90320% = QportInstall00, USB\VID_05C6&PID_9032&MI_00 257 | %QcomDevice90321% = QportInstall00, USB\VID_05C6&PID_9032&MI_01 258 | %QcomDevice90323% = QportInstall00, USB\VID_05C6&PID_9032&MI_03 259 | %QcomDevice90330% = QportInstall00, USB\VID_05C6&PID_9033&MI_00 260 | %QcomDevice90331% = QportInstall00, USB\VID_05C6&PID_9033&MI_01 261 | %QcomDevice90340% = QportInstall00, USB\VID_05C6&PID_9034&MI_00 262 | %QcomDevice90341% = QportInstall00, USB\VID_05C6&PID_9034&MI_01 263 | %QcomDevice90350% = QportInstall00, USB\VID_05C6&PID_9035&MI_00 264 | %QcomDevice90351% = QportInstall00, USB\VID_05C6&PID_9035&MI_01 265 | %QcomDevice90360% = QportInstall00, USB\VID_05C6&PID_9036&MI_00 266 | %QcomDevice90361% = QportInstall00, USB\VID_05C6&PID_9036&MI_01 267 | %QcomDevice90370% = QportInstall00, USB\VID_05C6&PID_9037&MI_00 268 | %QcomDevice90371% = QportInstall00, USB\VID_05C6&PID_9037&MI_01 269 | %QcomDevice90380% = QportInstall00, USB\VID_05C6&PID_9038&MI_00 270 | %QcomDevice90381% = QportInstall00, USB\VID_05C6&PID_9038&MI_01 271 | %QcomDevice903A1% = QportInstall00, USB\VID_05C6&PID_903A&MI_01 272 | %QcomDevice903B0% = QportInstall00, USB\VID_05C6&PID_903B&MI_00 273 | %QcomDevice903B1% = QportInstall00, USB\VID_05C6&PID_903B&MI_01 274 | %QcomDevice903C0% = QportInstall00, USB\VID_05C6&PID_903C&MI_00 275 | %QcomDevice903C1% = QportInstall00, USB\VID_05C6&PID_903C&MI_01 276 | %QcomDevice903D0% = QportInstall00, USB\VID_05C6&PID_903D&MI_00 277 | %QcomDevice903E0% = QportInstall00, USB\VID_05C6&PID_903E&MI_00 278 | %QcomDevice903F1% = QportInstall00, USB\VID_05C6&PID_903F&MI_01 279 | %QcomDevice903F2% = QportInstall00, USB\VID_05C6&PID_903F&MI_02 280 | %QcomDevice90401% = QportInstall00, USB\VID_05C6&PID_9040&MI_01 281 | %QcomDevice90402% = QportInstall00, USB\VID_05C6&PID_9040&MI_02 282 | %QcomDevice90412% = QportInstall00, USB\VID_05C6&PID_9041&MI_02 283 | %QcomDevice90413% = QportInstall00, USB\VID_05C6&PID_9041&MI_03 284 | %QcomDevice90422% = QportInstall00, USB\VID_05C6&PID_9042&MI_02 285 | %QcomDevice90423% = QportInstall00, USB\VID_05C6&PID_9042&MI_03 286 | %QcomDevice90430% = QportInstall00, USB\VID_05C6&PID_9043&MI_00 287 | %QcomDevice90431% = QportInstall00, USB\VID_05C6&PID_9043&MI_01 288 | %QcomDevice90440% = QportInstall00, USB\VID_05C6&PID_9044&MI_00 289 | %QcomDevice90441% = QportInstall00, USB\VID_05C6&PID_9044&MI_01 290 | %QcomDevice90450% = QportInstall00, USB\VID_05C6&PID_9045&MI_00 291 | %QcomDevice90451% = QportInstall00, USB\VID_05C6&PID_9045&MI_01 292 | %QcomDevice91000% = QportInstall00, USB\VID_05C6&PID_9100&MI_00 293 | %QcomDevice91001% = QportInstall00, USB\VID_05C6&PID_9100&MI_01 294 | %QcomDevice91010% = QportInstall00, USB\VID_05C6&PID_9101&MI_00 295 | %QcomDevice91011% = QportInstall00, USB\VID_05C6&PID_9101&MI_01 296 | %QcomDevice91012% = QportInstall00, USB\VID_05C6&PID_9101&MI_02 297 | %QcomDevice91014% = QportInstall00, USB\VID_05C6&PID_9101&MI_04 298 | %QcomDevice91015% = QportInstall00, USB\VID_05C6&PID_9101&MI_05 299 | %QcomDevice94020% = QportInstall00, USB\VID_05C6&PID_9402&MI_00 300 | %QcomDevice94021% = QportInstall00, USB\VID_05C6&PID_9402&MI_01 301 | %QcomDevice94040% = QportInstall00, USB\VID_05C6&PID_9404&MI_00 302 | %QcomDevice94041% = QportInstall00, USB\VID_05C6&PID_9404&MI_01 303 | %QcomDeviceF0051% = QportInstall00, USB\VID_05C6&PID_F005&MI_01 304 | %QcomDevice31991% = QportInstall00, USB\VID_05C6&PID_3199&MI_01 305 | %QcomDevice31992% = QportInstall00, USB\VID_05C6&PID_3199&MI_02 306 | %QcomDevice31993% = QportInstall00, USB\VID_05C6&PID_3199&MI_03 307 | %QcomDevice319A1% = QportInstall00, USB\VID_05C6&PID_319A&MI_01 308 | %QcomDevice319A2% = QportInstall00, USB\VID_05C6&PID_319A&MI_02 309 | %QcomDevice319A3% = QportInstall00, USB\VID_05C6&PID_319A&MI_03 310 | %QcomDevice319B0% = QportInstall00, USB\VID_05C6&PID_319B&MI_00 311 | %QcomDevice319B2% = QportInstall00, USB\VID_05C6&PID_319B&MI_02 312 | %QcomDevice319B3% = QportInstall00, USB\VID_05C6&PID_319B&MI_03 313 | %QcomDeviceF00D% = QportInstall00, USB\VID_05C6&PID_F00D 314 | 315 | [QcomSerialPort.NTamd64] 316 | %QcomDevice00% = QportInstall00, USB\VID_05C6&PID_3197&MI_01 317 | %QcomDevice6k% = QportInstall00, USB\VID_05C6&PID_6000&MI_01 318 | %QcomDeviceNMEA% = QportInstall00, USB\VID_05C6&PID_6000&MI_02 319 | %QcomDevice7k% = QportInstall00, USB\VID_05C6&PID_7000&MI_01 320 | %QcomDevice7k1% = QportInstall00, USB\VID_05C6&PID_7001&MI_00 321 | %QcomDevice7k3% = QportInstall00, USB\VID_05C6&PID_7001&MI_03 322 | %QcomDevice70020% = QportInstall00, USB\VID_05C6&PID_7002&MI_00 323 | %QcomDevice70023% = QportInstall00, USB\VID_05C6&PID_7002&MI_03 324 | %QcomDevice70024% = QportInstall00, USB\VID_05C6&PID_7002&MI_04 325 | %QcomDevice71010% = QportInstall00, USB\VID_05C6&PID_7101&MI_00 326 | %QcomDevice71015% = QportInstall00, USB\VID_05C6&PID_7101&MI_05 327 | %QcomDevice71020% = QportInstall00, USB\VID_05C6&PID_7102&MI_00 328 | %QcomDevice71025% = QportInstall00, USB\VID_05C6&PID_7102&MI_05 329 | %QcomDevice71026% = QportInstall00, USB\VID_05C6&PID_7102&MI_06 330 | %QcomDevice80000% = QportInstall00, USB\VID_05C6&PID_8000&MI_00 331 | %QcomDevice80002% = QportInstall00, USB\VID_05C6&PID_8000&MI_02 332 | %QcomDevice80010% = QportInstall00, USB\VID_05C6&PID_8001&MI_00 333 | %QcomDevice80012% = QportInstall00, USB\VID_05C6&PID_8001&MI_02 334 | %QcomDevice80020% = QportInstall00, USB\VID_05C6&PID_8002&MI_00 335 | %QcomDevice80022% = QportInstall00, USB\VID_05C6&PID_8002&MI_02 336 | %QcomDevice90080% = QportInstall00, USB\VID_05C6&PID_9008 337 | %QcomDevice90000% = QportInstall00, USB\VID_05C6&PID_9000&MI_00 338 | %QcomDevice90001% = QportInstall00, USB\VID_05C6&PID_9000&MI_01 339 | %QcomDevice90010% = QportInstall00, USB\VID_05C6&PID_9001&MI_00 340 | %QcomDevice90011% = QportInstall00, USB\VID_05C6&PID_9001&MI_01 341 | %QcomDevice90020% = QportInstall00, USB\VID_05C6&PID_9002&MI_00 342 | %QcomDevice90021% = QportInstall00, USB\VID_05C6&PID_9002&MI_01 343 | %QcomDevice90030% = QportInstall00, USB\VID_05C6&PID_9003&MI_00 344 | %QcomDevice90031% = QportInstall00, USB\VID_05C6&PID_9003&MI_01 345 | %QcomDevice90032% = QportInstall00, USB\VID_05C6&PID_9003&MI_02 346 | %QcomDevice32001% = QportInstall00, USB\VID_05C6&PID_3200&MI_01 347 | %QcomDevice32002% = QportInstall00, USB\VID_05C6&PID_3200&MI_02 348 | %QcomDevice90040% = QportInstall00, USB\VID_05C6&PID_9004&MI_00 349 | %QcomDevice90050% = QportInstall00, USB\VID_05C6&PID_9005&MI_00 350 | %QcomDevice90060% = QportInstall00, USB\VID_05C6&PID_9006&MI_00 351 | %QcomDevice900A0% = QportInstall00, USB\VID_05C6&PID_900A&MI_00 352 | %QcomDevice900A1% = QportInstall00, USB\VID_05C6&PID_900A&MI_01 353 | %QcomDevice900B0% = QportInstall00, USB\VID_05C6&PID_900B&MI_00 354 | %QcomDevice900C0% = QportInstall00, USB\VID_05C6&PID_900C&MI_00 355 | %QcomDevice900C1% = QportInstall00, USB\VID_05C6&PID_900C&MI_01 356 | %QcomDevice900D0% = QportInstall00, USB\VID_05C6&PID_900D&MI_00 357 | %QcomDevice900D1% = QportInstall00, USB\VID_05C6&PID_900D&MI_01 358 | %QcomDevice900E0% = QportInstall00, USB\VID_05C6&PID_900E 359 | %QcomDevice900F0% = QportInstall00, USB\VID_05C6&PID_900F&MI_00 360 | %QcomDevice900F1% = QportInstall00, USB\VID_05C6&PID_900F&MI_01 361 | %QcomDevice90100% = QportInstall00, USB\VID_05C6&PID_9010&MI_00 362 | %QcomDevice90101% = QportInstall00, USB\VID_05C6&PID_9010&MI_01 363 | %QcomDevice90110% = QportInstall00, USB\VID_05C6&PID_9011&MI_00 364 | %QcomDevice90111% = QportInstall00, USB\VID_05C6&PID_9011&MI_01 365 | %QcomDevice90120% = QportInstall00, USB\VID_05C6&PID_9012&MI_00 366 | %QcomDevice90130% = QportInstall00, USB\VID_05C6&PID_9013&MI_00 367 | %QcomDevice90160% = QportInstall00, USB\VID_05C6&PID_9016&MI_00 368 | %QcomDevice90162% = QportInstall00, USB\VID_05C6&PID_9016&MI_02 369 | %QcomDevice90170% = QportInstall00, USB\VID_05C6&PID_9017&MI_00 370 | %QcomDevice90172% = QportInstall00, USB\VID_05C6&PID_9017&MI_02 371 | %QcomDevice90180% = QportInstall00, USB\VID_05C6&PID_9018&MI_00 372 | %QcomDevice90183% = QportInstall00, USB\VID_05C6&PID_9018&MI_03 373 | %QcomDevice90191% = QportInstall00, USB\VID_05C6&PID_9019&MI_01 374 | %QcomDevice90192% = QportInstall00, USB\VID_05C6&PID_9019&MI_02 375 | %QcomDevice901B1% = QportInstall00, USB\VID_05C6&PID_901B&MI_01 376 | %QcomDevice901C0% = QportInstall00, USB\VID_05C6&PID_901C&MI_00 377 | %QcomDevice90200% = QportInstall00, USB\VID_05C6&PID_9020&MI_00 378 | %QcomDevice90203% = QportInstall00, USB\VID_05C6&PID_9020&MI_03 379 | %QcomDevice90210% = QportInstall00, USB\VID_05C6&PID_9021&MI_00 380 | %QcomDevice90220% = QportInstall00, USB\VID_05C6&PID_9022&MI_00 381 | %QcomDevice901D0% = QportInstall00, USB\VID_05C6&PID_901D&MI_00 382 | %QcomDevice901F0% = QportInstall00, USB\VID_05C6&PID_901F&MI_00 383 | %QcomDevice90250% = QportInstall00, USB\VID_05C6&PID_9025&MI_00 384 | ;%QcomDevice90253% = QportInstall00, USB\VID_05C6&PID_9025&MI_03 385 | %QcomDevice90260% = QportInstall00, USB\VID_05C6&PID_9026&MI_00 386 | ;%QcomDevice90262% = QportInstall00, USB\VID_05C6&PID_9026&MI_02 387 | %QcomDevice90280% = QportInstall00, USB\VID_05C6&PID_9028&MI_00 388 | %QcomDevice90281% = QportInstall00, USB\VID_05C6&PID_9028&MI_01 389 | %QcomDevice90290% = QportInstall00, USB\VID_05C6&PID_9029&MI_00 390 | %QcomDevice90292% = QportInstall00, USB\VID_05C6&PID_9029&MI_02 391 | %QcomDevice902C2% = QportInstall00, USB\VID_05C6&PID_902C&MI_02 392 | %QcomDevice902D2% = QportInstall00, USB\VID_05C6&PID_902D&MI_02 393 | %QcomDevice902E2% = QportInstall00, USB\VID_05C6&PID_902E&MI_02 394 | %QcomDevice902E4% = QportInstall00, USB\VID_05C6&PID_902E&MI_04 395 | %QcomDevice902F2% = QportInstall00, USB\VID_05C6&PID_902F&MI_02 396 | %QcomDevice90303% = QportInstall00, USB\VID_05C6&PID_9030&MI_03 397 | %QcomDevice90310% = QportInstall00, USB\VID_05C6&PID_9031&MI_00 398 | %QcomDevice90311% = QportInstall00, USB\VID_05C6&PID_9031&MI_01 399 | %QcomDevice90314% = QportInstall00, USB\VID_05C6&PID_9031&MI_04 400 | %QcomDevice90320% = QportInstall00, USB\VID_05C6&PID_9032&MI_00 401 | %QcomDevice90321% = QportInstall00, USB\VID_05C6&PID_9032&MI_01 402 | %QcomDevice90323% = QportInstall00, USB\VID_05C6&PID_9032&MI_03 403 | %QcomDevice90330% = QportInstall00, USB\VID_05C6&PID_9033&MI_00 404 | %QcomDevice90331% = QportInstall00, USB\VID_05C6&PID_9033&MI_01 405 | %QcomDevice90340% = QportInstall00, USB\VID_05C6&PID_9034&MI_00 406 | %QcomDevice90341% = QportInstall00, USB\VID_05C6&PID_9034&MI_01 407 | %QcomDevice90350% = QportInstall00, USB\VID_05C6&PID_9035&MI_00 408 | %QcomDevice90351% = QportInstall00, USB\VID_05C6&PID_9035&MI_01 409 | %QcomDevice90360% = QportInstall00, USB\VID_05C6&PID_9036&MI_00 410 | %QcomDevice90361% = QportInstall00, USB\VID_05C6&PID_9036&MI_01 411 | %QcomDevice90370% = QportInstall00, USB\VID_05C6&PID_9037&MI_00 412 | %QcomDevice90371% = QportInstall00, USB\VID_05C6&PID_9037&MI_01 413 | %QcomDevice90380% = QportInstall00, USB\VID_05C6&PID_9038&MI_00 414 | %QcomDevice90381% = QportInstall00, USB\VID_05C6&PID_9038&MI_01 415 | %QcomDevice903A1% = QportInstall00, USB\VID_05C6&PID_903A&MI_01 416 | %QcomDevice903B0% = QportInstall00, USB\VID_05C6&PID_903B&MI_00 417 | %QcomDevice903B1% = QportInstall00, USB\VID_05C6&PID_903B&MI_01 418 | %QcomDevice903C0% = QportInstall00, USB\VID_05C6&PID_903C&MI_00 419 | %QcomDevice903C1% = QportInstall00, USB\VID_05C6&PID_903C&MI_01 420 | %QcomDevice903D0% = QportInstall00, USB\VID_05C6&PID_903D&MI_00 421 | %QcomDevice903E0% = QportInstall00, USB\VID_05C6&PID_903E&MI_00 422 | %QcomDevice903F1% = QportInstall00, USB\VID_05C6&PID_903F&MI_01 423 | %QcomDevice903F2% = QportInstall00, USB\VID_05C6&PID_903F&MI_02 424 | %QcomDevice90401% = QportInstall00, USB\VID_05C6&PID_9040&MI_01 425 | %QcomDevice90402% = QportInstall00, USB\VID_05C6&PID_9040&MI_02 426 | %QcomDevice90412% = QportInstall00, USB\VID_05C6&PID_9041&MI_02 427 | %QcomDevice90413% = QportInstall00, USB\VID_05C6&PID_9041&MI_03 428 | %QcomDevice90422% = QportInstall00, USB\VID_05C6&PID_9042&MI_02 429 | %QcomDevice90423% = QportInstall00, USB\VID_05C6&PID_9042&MI_03 430 | %QcomDevice90430% = QportInstall00, USB\VID_05C6&PID_9043&MI_00 431 | %QcomDevice90431% = QportInstall00, USB\VID_05C6&PID_9043&MI_01 432 | %QcomDevice90440% = QportInstall00, USB\VID_05C6&PID_9044&MI_00 433 | %QcomDevice90441% = QportInstall00, USB\VID_05C6&PID_9044&MI_01 434 | %QcomDevice90450% = QportInstall00, USB\VID_05C6&PID_9045&MI_00 435 | %QcomDevice90451% = QportInstall00, USB\VID_05C6&PID_9045&MI_01 436 | %QcomDevice91000% = QportInstall00, USB\VID_05C6&PID_9100&MI_00 437 | %QcomDevice91001% = QportInstall00, USB\VID_05C6&PID_9100&MI_01 438 | %QcomDevice91010% = QportInstall00, USB\VID_05C6&PID_9101&MI_00 439 | %QcomDevice91011% = QportInstall00, USB\VID_05C6&PID_9101&MI_01 440 | %QcomDevice91012% = QportInstall00, USB\VID_05C6&PID_9101&MI_02 441 | %QcomDevice91014% = QportInstall00, USB\VID_05C6&PID_9101&MI_04 442 | %QcomDevice91015% = QportInstall00, USB\VID_05C6&PID_9101&MI_05 443 | %QcomDevice94020% = QportInstall00, USB\VID_05C6&PID_9402&MI_00 444 | %QcomDevice94021% = QportInstall00, USB\VID_05C6&PID_9402&MI_01 445 | %QcomDevice94040% = QportInstall00, USB\VID_05C6&PID_9404&MI_00 446 | %QcomDevice94041% = QportInstall00, USB\VID_05C6&PID_9404&MI_01 447 | %QcomDeviceF0051% = QportInstall00, USB\VID_05C6&PID_F005&MI_01 448 | %QcomDevice31991% = QportInstall00, USB\VID_05C6&PID_3199&MI_01 449 | %QcomDevice31992% = QportInstall00, USB\VID_05C6&PID_3199&MI_02 450 | %QcomDevice31993% = QportInstall00, USB\VID_05C6&PID_3199&MI_03 451 | %QcomDevice319A1% = QportInstall00, USB\VID_05C6&PID_319A&MI_01 452 | %QcomDevice319A2% = QportInstall00, USB\VID_05C6&PID_319A&MI_02 453 | %QcomDevice319A3% = QportInstall00, USB\VID_05C6&PID_319A&MI_03 454 | %QcomDevice319B0% = QportInstall00, USB\VID_05C6&PID_319B&MI_00 455 | %QcomDevice319B2% = QportInstall00, USB\VID_05C6&PID_319B&MI_02 456 | %QcomDevice319B3% = QportInstall00, USB\VID_05C6&PID_319B&MI_03 457 | %QcomDeviceF00D% = QportInstall00, USB\VID_05C6&PID_F00D 458 | 459 | [QportInstall00.NT] 460 | CopyFiles=QCUsbDriverFiles 461 | AddReg = All00, AddReg 462 | 463 | [QCUsbDriverFiles] 464 | qcusbser.sys 465 | 466 | [QportInstall00.NT.CoInstallers] 467 | CopyFiles=CoInstaller_CopyFiles 468 | AddReg=CoInstaller_AddReg 469 | 470 | [CoInstaller_CopyFiles] 471 | qcCoInstaller.dll 472 | 473 | [DestinationDirs] 474 | CoInstaller_CopyFiles = 11 ; System Dir(system32 on NT) 475 | DefaultDestDir = 12 476 | 477 | [QportInstall00.NT.Services] 478 | AddService=qcusbser, 0x00000002, QC_USBSerialService 479 | 480 | [QC_USBSerialService] 481 | DisplayName = %QCUSBSER% 482 | ServiceType = 1 483 | StartType = 3 484 | ErrorControl = 1 485 | ServiceBinary = %12%\qcusbser.sys 486 | 487 | [All00] 488 | HKR,,NTMPDriver,,qcusbser.sys 489 | 490 | [AddReg] 491 | HKR,,PortSubClass,1,01 492 | HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" 493 | 494 | [CoInstaller_AddReg] 495 | HKR,,CoInstallers32,0x00010000,"qcCoInstaller.dll,qcCoInstaller" 496 | 497 | [Strings] 498 | QCUSBSER = "Qualcomm USB Device for Legacy Serial Communication" 499 | QcomSrcDisk = "QUALCOMM USB Driver Disk" 500 | QUALCOMM = "Qualcomm Incorporated" 501 | QcomDevice00 = "Qualcomm Diagnostics Interface 3197" 502 | QcomDevice6k = "Qualcomm Diagnostics Interface 6000" 503 | QcomDeviceNMEA = "Qualcomm NMEA Device" 504 | QcomDevice7k = "Qualcomm Diagnostics Interface 7000" 505 | QcomDevice7k1 = "Qualcomm RRDM 7001" 506 | QcomDevice7k3 = "Qualcomm Diagnostics Interface 7001" 507 | QcomDevice70020 = "Qualcomm RRDM 7002" 508 | QcomDevice70023 = "Qualcomm Diagnostics Interface 7002" 509 | QcomDevice70024 = "Qualcomm NMEA 7002" 510 | QcomDevice71010 = "Qualcomm RRDM 7101" 511 | QcomDevice71015 = "Qualcomm Diagnostics Interface 7101" 512 | QcomDevice71020 = "Qualcomm RRDM 7102" 513 | QcomDevice71025 = "Qualcomm Diagnostics Interface 7102" 514 | QcomDevice71026 = "Qualcomm NMEA 7102" 515 | QcomDevice80000 = "Qualcomm HS-USB Diagnostics 8000" 516 | QcomDevice80002 = "Qualcomm HS-USB NMEA 8000" 517 | QcomDevice80010 = "Qualcomm HS-USB Diagnostics 8001" 518 | QcomDevice80012 = "Qualcomm HS-USB NMEA 8001" 519 | QcomDevice80020 = "Qualcomm HS-USB Diagnostics 8002" 520 | QcomDevice80022 = "Qualcomm HS-USB NMEA 8002" 521 | QcomDevice90080 = "Qualcomm HS-USB QDLoader 9008" 522 | QcomDevice90000 = "Qualcomm HS-USB Diagnostics 9000" 523 | QcomDevice90001 = "Qualcomm HS-USB NMEA 9000" 524 | QcomDevice90010 = "Qualcomm HS-USB Diagnostics 9001" 525 | QcomDevice90011 = "Qualcomm HS-USB NMEA 9001" 526 | QcomDevice90020 = "Qualcomm HS-USB Diagnostics 9002" 527 | QcomDevice90021 = "Qualcomm HS-USB NMEA 9002" 528 | QcomDevice90030 = "Qualcomm HS-USB Diagnostics 9003" 529 | QcomDevice90031 = "Qualcomm HS-USB NMEA 9003" 530 | QcomDevice90032 = "Qualcomm HS-USB AT Port 9003" 531 | QcomDevice32001 = "Qualcomm WinMobile Diagnostics 3200" 532 | QcomDevice32002 = "Qualcomm WinMobile NMEA 3200" 533 | QcomDevice90040 = "Qualcomm HS-USB Diagnostics 9004" 534 | QcomDevice90050 = "Qualcomm HS-USB Diagnostics 9005" 535 | QcomDevice90060 = "Qualcomm HS-USB Diagnostics 9006" 536 | QcomDevice900A0 = "Qualcomm HS-USB Diagnostics 900A" 537 | QcomDevice900A1 = "Qualcomm HS-USB NMEA 900A" 538 | QcomDevice900B0 = "Qualcomm HS-USB Diagnostics 900B" 539 | QcomDevice900C0 = "Qualcomm HS-USB Diagnostics 900C" 540 | QcomDevice900C1 = "Qualcomm HS-USB NMEA 900C" 541 | QcomDevice900D0 = "Qualcomm HS-USB Diagnostics 900D" 542 | QcomDevice900D1 = "Qualcomm HS-USB NMEA 900D" 543 | QcomDevice900E0 = "Qualcomm HS-USB Diagnostics 900E" 544 | QcomDevice900F0 = "Qualcomm HS-USB Diagnostics 900F" 545 | QcomDevice900F1 = "Qualcomm HS-USB NMEA 900F" 546 | QcomDevice90100 = "Qualcomm HS-USB Diagnostics 9010" 547 | QcomDevice90101 = "Qualcomm HS-USB NMEA 9010" 548 | QcomDevice90110 = "Qualcomm HS-USB Diagnostics 9011" 549 | QcomDevice90111 = "Qualcomm HS-USB NMEA 9011" 550 | QcomDevice90120 = "Qualcomm HS-USB Diagnostics 9012" 551 | QcomDevice90130 = "Qualcomm HS-USB Diagnostics 9013" 552 | QcomDevice90160 = "Qualcomm HS-USB Diagnostics 9016" 553 | QcomDevice90162 = "Qualcomm HS-USB NMEA 9016" 554 | QcomDevice90170 = "Qualcomm HS-USB Diagnostics 9017" 555 | QcomDevice90172 = "Qualcomm HS-USB NMEA 9017" 556 | QcomDevice90180 = "Qualcomm HS-USB Android DIAG 9018" 557 | QcomDevice90183 = "Qualcomm HS-USB Android GPS 9018" 558 | QcomDevice90191 = "Qualcomm WinMobile Diagnostics 9019" 559 | QcomDevice90192 = "Qualcomm WinMobile NMEA 9019" 560 | QcomDevice901B1 = "Qualcomm HS-USB Diagnostics 901B" 561 | QcomDevice901C0 = "Qualcomm HS-USB Diagnostics 901C" 562 | QcomDevice90200 = "Qualcomm HS-USB Android DIAG 9020" 563 | QcomDevice90203 = "Qualcomm HS-USB Android GPS 9020" 564 | QcomDevice90210 = "Qualcomm HS-USB Android DIAG 9021" 565 | QcomDevice90220 = "Qualcomm HS-USB Android DIAG 9022" 566 | QcomDevice901D0 = "Qualcomm HS-USB Android DIAG 901D" 567 | QcomDevice901F0 = "Qualcomm HS-USB Android DIAG 901F" 568 | QcomDevice90250 = "Qualcomm HS-USB Diagnostics 9025" 569 | QcomDevice90253 = "Qualcomm HS-USB NMEA 9025" 570 | QcomDevice90260 = "Qualcomm HS-USB Diagnostics 9026" 571 | QcomDevice90262 = "Qualcomm HS-USB NMEA 9026" 572 | QcomDevice90280 = "Qualcomm HS-USB Diagnostics 9028" 573 | QcomDevice90281 = "Qualcomm HS-USB NMEA 9028" 574 | QcomDevice90290 = "Qualcomm HS-USB Diagnostics 9029" 575 | QcomDevice90292 = "Qualcomm HS-USB NMEA 9029" 576 | QcomDevice902C2 = "Qualcomm HS-USB Android DIAG 902C" 577 | QcomDevice902D2 = "Qualcomm HS-USB Android DIAG 902D" 578 | QcomDevice902E2 = "Qualcomm HS-USB DIAG 902E" 579 | QcomDevice902E4 = "Qualcomm HS-USB NMEA 902E" 580 | QcomDevice902F2 = "Qualcomm HS-USB Diagnostics 902F" 581 | QcomDevice90303 = "Qualcomm HS-USB Diagnostics 9030" 582 | QcomDevice90310 = "Qualcomm HS-USB MSM Diagnostics 9031" 583 | QcomDevice90311 = "Qualcomm HS-USB MDM Diagnostics 9031" 584 | QcomDevice90314 = "Qualcomm HS-USB NMEA 9031" 585 | QcomDevice90320 = "Qualcomm HS-USB MSM Diagnostics 9032" 586 | QcomDevice90321 = "Qualcomm HS-USB MDM Diagnostics 9032" 587 | QcomDevice90323 = "Qualcomm HS-USB NMEA 9032" 588 | QcomDevice90330 = "Qualcomm HS-USB Diagnostics 9033" 589 | QcomDevice90331 = "Qualcomm HS-USB NMEA 9033" 590 | QcomDevice90340 = "Qualcomm HS-USB Diagnostics 9034" 591 | QcomDevice90341 = "Qualcomm HS-USB NMEA 9034" 592 | QcomDevice90350 = "Qualcomm HS-USB MSM Diagnostics 9035" 593 | QcomDevice90351 = "Qualcomm HS-USB MDM Diagnostics 9035" 594 | QcomDevice90360 = "Qualcomm HS-USB MSM Diagnostics 9036" 595 | QcomDevice90361 = "Qualcomm HS-USB MDM Diagnostics 9036" 596 | QcomDevice90370 = "Qualcomm HS-USB MSM Diagnostics 9037" 597 | QcomDevice90371 = "Qualcomm HS-USB MDM Diagnostics 9037" 598 | QcomDevice90380 = "Qualcomm HS-USB MSM Diagnostics 9038" 599 | QcomDevice90381 = "Qualcomm HS-USB MDM Diagnostics 9038" 600 | QcomDevice903A1 = "Qualcomm HS-USB Diagnostics 903A" 601 | QcomDevice903B0 = "Qualcomm HS-USB MSM Diagnostics 903B" 602 | QcomDevice903B1 = "Qualcomm HS-USB MDM Diagnostics 903B" 603 | QcomDevice903C0 = "Qualcomm HS-USB MSM Diagnostics 903C" 604 | QcomDevice903C1 = "Qualcomm HS-USB MDM Diagnostics 903C" 605 | QcomDevice903D0 = "Qualcomm HS-USB Diagnostics 903D" 606 | QcomDevice903E0 = "Qualcomm HS-USB Diagnostics 903E" 607 | QcomDevice903F1 = "Qualcomm HS-USB MSM Diagnostics 903F" 608 | QcomDevice903F2 = "Qualcomm HS-USB MDM Diagnostics 903F" 609 | QcomDevice90401 = "Qualcomm HS-USB MSM Diagnostics 9040" 610 | QcomDevice90402 = "Qualcomm HS-USB MDM Diagnostics 9040" 611 | QcomDevice90412 = "Qualcomm HS-USB MSM Diagnostics 9041" 612 | QcomDevice90413 = "Qualcomm HS-USB MDM Diagnostics 9041" 613 | QcomDevice90422 = "Qualcomm HS-USB MSM Diagnostics 9042" 614 | QcomDevice90423 = "Qualcomm HS-USB MDM Diagnostics 9042" 615 | QcomDevice90430 = "Qualcomm HS-USB Diagnostics 9043" 616 | QcomDevice90431 = "Qualcomm HS-USB NMEA 9043" 617 | QcomDevice90440 = "Qualcomm HS-USB MSM Diagnostics 9044" 618 | QcomDevice90441 = "Qualcomm HS-USB MDM Diagnostics 9044" 619 | QcomDevice90450 = "Qualcomm HS-USB MSM Diagnostics 9045" 620 | QcomDevice90451 = "Qualcomm HS-USB MDM Diagnostics 9045" 621 | QcomDevice91000 = "Qualcomm Symbian USB Diagnostics 9100" 622 | QcomDevice91001 = "Qualcomm Symbian USB Trace 9100" 623 | QcomDevice91010 = "Qualcomm Symbian USB Diagnostics 9101" 624 | QcomDevice91011 = "Qualcomm Symbian USB Trace 9101" 625 | QcomDevice91012 = "Qualcomm Symbian USB IP 9101" 626 | QcomDevice91014 = "Qualcomm Symbian USB General Purpose 9101" 627 | QcomDevice91015 = "Qualcomm Symbian USB Shell 9101" 628 | QcomDevice94020 = "Qualcomm HS-USB Diagnostics 9402" 629 | QcomDevice94021 = "Qualcomm HS-USB NMEA 9402" 630 | QcomDevice94040 = "Qualcomm HS-USB Diagnostics 9404" 631 | QcomDevice94041 = "Qualcomm HS-USB NMEA 9404" 632 | QcomDeviceF0051 = "Qualcomm HS-USB Diagnostics F005" 633 | QcomDevice31991 = "Qualcomm WinMobile Diagnostics 3199" 634 | QcomDevice31992 = "Qualcomm WinMobile NMEA 3199" 635 | QcomDevice31993 = "Qualcomm WinMobile TRACE 3199" 636 | QcomDevice319A1 = "Qualcomm WinMobile Diagnostics 319A" 637 | QcomDevice319A2 = "Qualcomm WinMobile NMEA 319A" 638 | QcomDevice319A3 = "Qualcomm WinMobile TRACE 319A" 639 | QcomDevice319B0 = "Qualcomm WinMobile Diagnostics 319B" 640 | QcomDevice319B2 = "Qualcomm WinMobile NMEA 319B" 641 | QcomDevice319B3 = "Qualcomm WinMobile TRACE 319B" 642 | QcomDeviceF00D = "Qualcomm Mary Samsonite Profiling Board" 643 | 644 | -------------------------------------------------------------------------------- /qpst-drivers/x86/qcusbser.sys: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jareddantis/unbrick_8960/64804022a2daad2e741cb202257a6db558079453/qpst-drivers/x86/qcusbser.sys -------------------------------------------------------------------------------- /scripts/backup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ $(uname -m) == "x86_64" ]; then 4 | adb="../adb/64-bit/adb" 5 | else 6 | adb="../adb/32-bit/adb" 7 | fi 8 | 9 | echo "Waiting for device" 10 | $adb wait-for-device 11 | 12 | echo "Pushing script to device" 13 | $adb push dump.sh /sdcard/dump.sh 14 | $adb shell mount -o rw,remount /system 15 | $adb shell cp /sdcard/dump.sh /system/xbin/dump.sh 16 | $adb shell chmod 0755 /system/xbin/dump.sh 17 | 18 | echo "Executing script (please permit superuser when prompted)" 19 | $adb shell su -c /system/xbin/dump.sh 20 | 21 | echo "Pulling partitions" 22 | devm=$($adb shell getprop ro.product.model) 23 | mkdir $devm 24 | cd $devm 25 | $adb pull /sdcard/unbrick 26 | chmod -R 0777 * 27 | 28 | echo "Moving pulled files to devices/$devm" 29 | cd ../ 30 | mv $devm ../devices 31 | 32 | echo "Done." 33 | exit 0 34 | -------------------------------------------------------------------------------- /scripts/dump.sh: -------------------------------------------------------------------------------- 1 | #!/system/bin/sh 2 | 3 | mkdir -p /sdcard/unbrick 4 | dd if=/dev/block/mmcblk0p1 of=/sdcard/unbrick/sdm_hdr.mbn 5 | dd if=/dev/block/mmcblk0p2 of=/sdcard/unbrick/sbl1.mbn 6 | dd if=/dev/block/mmcblk0p3 of=/sdcard/unbrick/sbl2.mbn 7 | dd if=/dev/block/mmcblk0p4 of=/sdcard/unbrick/sbl3.mbn 8 | dd if=/dev/block/mmcblk0p5 of=/sdcard/unbrick/aboot.mbn 9 | dd if=/dev/block/mmcblk0p6 of=/sdcard/unbrick/rpm.mbn 10 | dd if=/dev/block/mmcblk0p8 of=/sdcard/unbrick/tz.mbn 11 | dd if=/dev/block/mmcblk0p9 of=/sdcard/unbrick/pitfile.pit 12 | 13 | exit 0 -------------------------------------------------------------------------------- /scripts/get-part.sh: -------------------------------------------------------------------------------- 1 | ######### 2 | ###get-part.sh is a unfinised tool for collecting the partition data from samsung/qualcomm based devices 3 | #### BETA v1 4 | echo -e "\033[38;5;148mGet Partition Specs v1-0\033[39m" 5 | echo "______________" 6 | echo -e "By Darkspr1te, See README for thanks & References" 7 | 8 | #/bin/bash 9 | tools=`adb shell su -c "find /data/loader/sfdisk"` 10 | testtools="find:" 11 | model=`adb shell getprop ro.product.model | sed '$s/.$//'`-`adb shell getprop ro.board.platform | sed '$s/.$//'` 12 | line=0 13 | 14 | #echo $tools 15 | #exit 16 | #echo $testtools 17 | 18 | installtools () 19 | { 20 | echo "Installing Tools" 21 | adb shell su -c "mkdir /data/loader" 22 | adb push ../tools/sfdisk /data/loader 23 | adb shell su -c "chmod 744 /data/loader/sfdisk" 24 | } 25 | 26 | 27 | parsecsv () 28 | { 29 | skipline=`cat $model-partition.txt | grep -n "unit" | cut -c1-1` # find the word sectors note it's line number for tail skip later 30 | let skipline=skipline+1 # skip one more so we start with empty line 31 | 32 | #debug 33 | #echo $skipline 34 | 35 | #for line in $(cat $model-partition.txt); do 36 | #Debug line for testing sscrips sed fileters 37 | #does not count for bootable attrib and part id has double ,, - fixed 38 | 39 | # echo "partition number start size id bootable flag" # not written to csv file 40 | # echo "/dev/block/mmcblk0p1 , 1 , 204800 , 92" # to test layout spacing 41 | 42 | old_IFS=$IFS # save the field separator 43 | IFS=$'\n' # new field separator, the end of line 44 | if [ -f $model-partition.csv ]; 45 | then 46 | rm $model-partition.csv # remove old file as csv parser will just fill it up 47 | fi 48 | for line in $(sed 's/://' $model-partition.txt | sed "s/=/\,/g" | sed "s/,/\ /g" | tail -n +$skipline | sed "s/start/\,/g" | sed "s/size/\,/g" | sed "s/Id/\,/g" | sed "s/bootable/\,*/g" | tr -d '\001'-'\011''\013''\014''\016'-'\037''\200'-'\377'); do 49 | { 50 | 51 | linetxt=`echo -En "$line" | sed 's/\r//g' | sed 's/ //g'` 52 | idtxt=`echo -En "$line" | awk '{print $7}' | sed 's/\r//g'` 53 | bootflag=`echo "$linetxt" | awk 'BEGIN { FS = "," } ;{print $5}' |sed 's/\r//g'` 54 | #echo "$bootflag" 55 | if [ "$bootflag" == "*" ] 56 | then 57 | linetxt=`echo -En "$line" | sed 's/\r//g' | sed 's/ //g' | sed 's/\,\*//g'` 58 | fi 59 | 60 | case "$idtxt" in 61 | 92) 62 | csvstring=",HLOS-BIN" 63 | ;; 64 | 4d) 65 | csvstring=",SBL1" 66 | ;; 67 | 51) 68 | csvstring=",SBL2" 69 | ;; 70 | 5) 71 | csvstring=",EXT" 72 | ;; 73 | 47) 74 | csvstring=",RPM" 75 | ;; 76 | 45) 77 | csvstring=",SBL3" 78 | ;; 79 | 4c) 80 | csvstring=",ABOOT" 81 | ;; 82 | 48) 83 | csvstring=",BOOT" 84 | ;; 85 | 46) 86 | csvstring=",TZ" 87 | ;; 88 | 5d) 89 | csvstring=",SSD" 90 | ;; 91 | 91) 92 | csvstring=",PIT" 93 | ;; 94 | 93) 95 | csvstring=",PARAM" 96 | ;; 97 | c) 98 | csvstring=",MODEM" 99 | ;; 100 | 4a) 101 | csvstring=",MSM_ST1" 102 | ;; 103 | 4b) 104 | csvstring=",MSM_ST2" 105 | ;; 106 | 58) 107 | csvstring=",MSM_FSG" 108 | ;; 109 | 8f) 110 | csvstring=",MDM" 111 | ;; 112 | 59) 113 | csvstring=",M9K_EFS1" 114 | ;; 115 | 5a) 116 | csvstring=",M9K_EFS2" 117 | ;; 118 | 5b) 119 | csvstring=",M9K_FSG" 120 | ;; 121 | ab) 122 | csvstring=",DEVENC" 123 | ;; 124 | 60*) 125 | csvstring=",RECOVERY" 126 | ;; 127 | 94*) 128 | csvstring=",FOTA" 129 | ;; 130 | a5*) 131 | csvstring=",SYSTEM" 132 | ;; 133 | a6*) 134 | csvstring=",USERDATA" 135 | ;; 136 | a8*) 137 | csvstring=",CACHE" 138 | ;; 139 | a9*) 140 | csvstring=",TOMBSTONES" 141 | ;; 142 | 95*) 143 | csvstring=",HIDDEN" 144 | ;; 145 | 90*) 146 | csvstring=",UMS" 147 | ;; 148 | 149 | esac 150 | echo -en "$linetxt" >> $model-partition.csv 151 | echo -en "$csvstring" >> $model-partition.csv 152 | if [ "$bootflag" == "*" ]; then 153 | { 154 | echo ",bootable" >> $model-partition.csv 155 | } 156 | else 157 | { 158 | echo "" >> $model-partition.csv 159 | } 160 | fi 161 | 162 | } 163 | done 164 | IFS=$old_IFS # restore default field separator 165 | } 166 | 167 | 168 | transpose () 169 | { 170 | awk '{ print $3 }' 171 | for line in $(cat $model-partition.csv); do 172 | echo 173 | done 174 | 175 | } 176 | 177 | extractpit () 178 | { 179 | for line in $(cat $model-partition.csv); do 180 | { 181 | partid=`echo $line | awk '{print $1}'` 182 | echo "$partid" 183 | } 184 | done 185 | echo "donepit" 186 | } 187 | #main function 188 | # Test to see if find returns file found or not, if fails first text is find: if success returns location of file - quit and dirty if exists for adb bridge - requires busybox 189 | if [[ "$tools" == *"$testtools"* ]]; then 190 | installtools 191 | else 192 | echo "Tools Already Present- Skipping" 193 | fi 194 | 195 | echo -n "Device Model " 196 | echo $model 197 | 198 | adb shell su -c "/data/loader/sfdisk -d /dev/block/mmcblk0" > $model-partition.txt 199 | parsecsv 200 | extractpit 201 | echo "done" 202 | 203 | 204 | -------------------------------------------------------------------------------- /scripts/get-partitions.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ $(uname -m) == "x86_64" ]; then 4 | adb="../adb/64-bit/adb" 5 | else 6 | adb="../adb/32-bit/adb" 7 | fi 8 | 9 | $adb root &>/dev/null # Start the adb with root permissions and hide the output 10 | echo "$(tput bold)Connect the device with adb debugging enabled$(tput sgr 0)" 11 | timeout 60 $adb wait-for-any-device 12 | if [ $? -eq 0 ]; then 13 | set -e 14 | echo "Pushing script to device (please permit superuser when prompted)" 15 | $adb shell su -c 'mount -o rw,remount /system' 16 | $adb push ../binaries/parted /system/bin/parted 17 | $adb shell su -c 'chmod 0755 /system/bin/parted' 18 | 19 | echo "Creating destination folder" 20 | model=$($adb shell getprop ro.product.model) 21 | if [ -z "$model" ]; then 22 | model="$HOME/Desktop/Device" 23 | else 24 | model="$HOME/Desktop/$model" 25 | fi 26 | mkdir -p "$model" 27 | 28 | echo "Pulling partition table (please permit superuser when prompted)" 29 | $adb shell su -c 'parted /dev/block/mmcblk0 unit s print' > "$model/PartitionTableSectors.txt" 30 | $adb shell su -c 'parted /dev/block/mmcblk0 unit B print' > "$model/PartitionTableBytes.txt" 31 | 32 | echo "Removing script from device" 33 | $adb shell su -c 'rm -f /system/bin/parted' 34 | 35 | echo "Done, partition table location $(tput bold)$model$(tput sgr 0)" 36 | else 37 | echo "Device not detected" 38 | fi 39 | read -n 1 -s -r -p "Press any key to exit..." 40 | echo "" 41 | exit 0 42 | -------------------------------------------------------------------------------- /scripts/getpartbin.py: -------------------------------------------------------------------------------- 1 | import os 2 | from struct import * 3 | 4 | def mbr(): 5 | global offset, partitions 6 | os.popen("adb shell su -c 'dd if=/dev/block/mmcblk0 of=/cache/partition0.bin bs=512 count=1'").close() 7 | os.popen("adb shell su -c 'cp /cache/partition0.bin /sdcard/partition0.bin'").close() 8 | os.popen("adb pull /sdcard/partition0.bin .").close() 9 | f = open("partition0.bin", 'rb') 10 | data = f.read() 11 | f.close() 12 | partitions = [ ] 13 | n=0 14 | while True: 15 | buf = data[446+(16*n):446+(16*(n+1))] 16 | partition = dict(zip(('boot', 'id', 'start', 'size'), unpack('4I', buf))) 17 | partition['type'] = "MBR" 18 | n += 1 19 | partition['no'] = n 20 | partitions.append(partition) 21 | if partition['id'] == 5: 22 | offset = partition['start'] 23 | break 24 | 25 | def ebr(): 26 | global offset, partitions 27 | n = 0 28 | while True: 29 | a = 0 30 | os.popen("adb shell su -c 'dd if=/dev/block/mmcblk0 of=/cache/ebr bs=512 count=1 skip=" + str(offset+n) + "\'").close() 31 | n += 1 32 | os.popen("adb shell su -c 'dd if=/cache/ebr of=/cache/partition0.bin bs=512 count=1 seek=" + str(n) + "'").close() 33 | os.popen("adb shell su -c 'cp /cache/ebr /sdcard/partition0.bin'").close() 34 | os.popen("adb pull /sdcard/partition0.bin .").close() 35 | f = open("partition0.bin", 'rb') 36 | data = f.read() 37 | f.close() 38 | while True: 39 | buf = data[446+16*a:446+16*(a+1)] 40 | partition = dict(zip(('boot', 'id', 'start', 'size'), unpack('4I', buf))) 41 | if partition['id'] == 5: 42 | break 43 | if partition['id'] == 0: 44 | return 45 | partition['type'] = "EBR" 46 | partition['no'] = n 47 | partition['start'] += n-1+offset 48 | partitions.append(partition) 49 | a += 1 50 | 51 | 52 | if __name__ == "__main__": 53 | mbr() 54 | ebr() 55 | os.popen("adb shell su -c 'cp /cache/partition0.bin /sdcard/partition0.bin'").close() 56 | os.popen("adb pull /sdcard/partition0.bin .").close() 57 | for part in partitions: 58 | print "%s %2i, Boot: 0x%02X, Id: 0x%02X, Start: 0x%08X (%8i), Size: 0x%08X (%8i, %8i KB)" % (part['type'], part['no'], part['boot'], part['id'], part['start'], part['start'], part['size'], part['size'], part['size']/2) 59 | -------------------------------------------------------------------------------- /scripts/qdload.pl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | 3 | use strict; 4 | use warnings; 5 | use Getopt::Long; 6 | use Fcntl; 7 | 8 | $| = 1; 9 | 10 | my @crcTable = ( 11 | 0x0000, 0x1189, 0x2312, 0x329b, 0x4624, 0x57ad, 0x6536, 0x74bf, 12 | 0x8c48, 0x9dc1, 0xaf5a, 0xbed3, 0xca6c, 0xdbe5, 0xe97e, 0xf8f7, 13 | 0x1081, 0x0108, 0x3393, 0x221a, 0x56a5, 0x472c, 0x75b7, 0x643e, 14 | 0x9cc9, 0x8d40, 0xbfdb, 0xae52, 0xdaed, 0xcb64, 0xf9ff, 0xe876, 15 | 0x2102, 0x308b, 0x0210, 0x1399, 0x6726, 0x76af, 0x4434, 0x55bd, 16 | 0xad4a, 0xbcc3, 0x8e58, 0x9fd1, 0xeb6e, 0xfae7, 0xc87c, 0xd9f5, 17 | 0x3183, 0x200a, 0x1291, 0x0318, 0x77a7, 0x662e, 0x54b5, 0x453c, 18 | 0xbdcb, 0xac42, 0x9ed9, 0x8f50, 0xfbef, 0xea66, 0xd8fd, 0xc974, 19 | 0x4204, 0x538d, 0x6116, 0x709f, 0x0420, 0x15a9, 0x2732, 0x36bb, 20 | 0xce4c, 0xdfc5, 0xed5e, 0xfcd7, 0x8868, 0x99e1, 0xab7a, 0xbaf3, 21 | 0x5285, 0x430c, 0x7197, 0x601e, 0x14a1, 0x0528, 0x37b3, 0x263a, 22 | 0xdecd, 0xcf44, 0xfddf, 0xec56, 0x98e9, 0x8960, 0xbbfb, 0xaa72, 23 | 0x6306, 0x728f, 0x4014, 0x519d, 0x2522, 0x34ab, 0x0630, 0x17b9, 24 | 0xef4e, 0xfec7, 0xcc5c, 0xddd5, 0xa96a, 0xb8e3, 0x8a78, 0x9bf1, 25 | 0x7387, 0x620e, 0x5095, 0x411c, 0x35a3, 0x242a, 0x16b1, 0x0738, 26 | 0xffcf, 0xee46, 0xdcdd, 0xcd54, 0xb9eb, 0xa862, 0x9af9, 0x8b70, 27 | 0x8408, 0x9581, 0xa71a, 0xb693, 0xc22c, 0xd3a5, 0xe13e, 0xf0b7, 28 | 0x0840, 0x19c9, 0x2b52, 0x3adb, 0x4e64, 0x5fed, 0x6d76, 0x7cff, 29 | 0x9489, 0x8500, 0xb79b, 0xa612, 0xd2ad, 0xc324, 0xf1bf, 0xe036, 30 | 0x18c1, 0x0948, 0x3bd3, 0x2a5a, 0x5ee5, 0x4f6c, 0x7df7, 0x6c7e, 31 | 0xa50a, 0xb483, 0x8618, 0x9791, 0xe32e, 0xf2a7, 0xc03c, 0xd1b5, 32 | 0x2942, 0x38cb, 0x0a50, 0x1bd9, 0x6f66, 0x7eef, 0x4c74, 0x5dfd, 33 | 0xb58b, 0xa402, 0x9699, 0x8710, 0xf3af, 0xe226, 0xd0bd, 0xc134, 34 | 0x39c3, 0x284a, 0x1ad1, 0x0b58, 0x7fe7, 0x6e6e, 0x5cf5, 0x4d7c, 35 | 0xc60c, 0xd785, 0xe51e, 0xf497, 0x8028, 0x91a1, 0xa33a, 0xb2b3, 36 | 0x4a44, 0x5bcd, 0x6956, 0x78df, 0x0c60, 0x1de9, 0x2f72, 0x3efb, 37 | 0xd68d, 0xc704, 0xf59f, 0xe416, 0x90a9, 0x8120, 0xb3bb, 0xa232, 38 | 0x5ac5, 0x4b4c, 0x79d7, 0x685e, 0x1ce1, 0x0d68, 0x3ff3, 0x2e7a, 39 | 0xe70e, 0xf687, 0xc41c, 0xd595, 0xa12a, 0xb0a3, 0x8238, 0x93b1, 40 | 0x6b46, 0x7acf, 0x4854, 0x59dd, 0x2d62, 0x3ceb, 0x0e70, 0x1ff9, 41 | 0xf78f, 0xe606, 0xd49d, 0xc514, 0xb1ab, 0xa022, 0x92b9, 0x8330, 42 | 0x7bc7, 0x6a4e, 0x58d5, 0x495c, 0x3de3, 0x2c6a, 0x1ef1, 0x0f78 43 | ); 44 | 45 | sub writeMagic { 46 | my $fd = shift; 47 | 48 | return undef 49 | if ( 50 | !sendPacket( 51 | $fd, 52 | deserialize( 53 | "01 51 43 4f 4d 20 66 61 73 74 20 64 6f 77 6e 6c 6f 61 64 20 70 72 6f 74 6f 63 6f 6c 20 68 6f 73 74 03 03 09" 54 | ) 55 | ) 56 | ); 57 | 58 | return 1; 59 | } 60 | 61 | sub writeChunk { 62 | my $fd = shift; 63 | my $address = shift; 64 | my $chunk = shift; 65 | 66 | my $length = length($chunk); 67 | my $response; 68 | 69 | #print "Writing chunk...\n"; 70 | if ( 71 | !sendPacket( 72 | $fd, 73 | deserialize( 74 | "0f " 75 | . serial32($address) . " " 76 | . serial16($length) . " " 77 | . serialize($chunk) 78 | ) 79 | ) 80 | ) 81 | { 82 | print "Failed to send chunk.\n"; 83 | return undef; 84 | } 85 | if ( !( $response = readPacket( $fd, 2.0 ) ) ) { 86 | print "Failed to get response.\n"; 87 | return undef; 88 | } 89 | 90 | my @responseBytes = unpack( 'C*', $response ); 91 | if ( scalar @responseBytes != 1 || $responseBytes[0] != 2 ) { 92 | print "Invalid Response: ", serialize($response), "\n"; 93 | return undef; 94 | } 95 | return 1; 96 | } 97 | 98 | sub writeChunk2 { 99 | my $fd = shift; 100 | my $address = shift; 101 | my $chunk = shift; 102 | my $sentPacketsRef = shift; 103 | 104 | my $length = length($chunk); 105 | my $response; 106 | 107 | #print "Writing chunk...\n"; 108 | if ( 109 | !sendPacket( 110 | $fd, 111 | deserialize( 112 | "07 " . serial32le($address) . " " . serialize($chunk) 113 | ) 114 | ) 115 | ) 116 | { 117 | print "Failed to send chunk.\n"; 118 | return undef; 119 | } 120 | $sentPacketsRef->{ sprintf( "%0.8x", $address ) } = 1; 121 | 122 | my $outstanding = scalar keys %{$sentPacketsRef}; 123 | my $acktimeout; 124 | 125 | if ( $outstanding > 8 ) { 126 | $acktimeout = 2.0; 127 | } 128 | elsif ( $outstanding > 4 ) { 129 | $acktimeout = 0.25; 130 | } 131 | else { 132 | $acktimeout = 0.01; 133 | } 134 | 135 | $acktimeout = 10.0; 136 | 137 | while ( $response = readPacket( $fd, $acktimeout ) ) { 138 | my @responseBytes = unpack( 'C*', $response ); 139 | if ( scalar @responseBytes != 5 || $responseBytes[0] != 8 ) { 140 | print "Invalid Response: ", serialize($response), "\n"; 141 | exit 1; 142 | } 143 | 144 | my $ackpacket; 145 | $ackpacket = sprintf( 146 | '%.2x%.2x%.2x%.2x', 147 | $responseBytes[4], $responseBytes[3], 148 | $responseBytes[2], $responseBytes[1] 149 | ); 150 | 151 | delete $sentPacketsRef->{$ackpacket}; 152 | 153 | $outstanding = scalar keys %{$sentPacketsRef}; 154 | 155 | print "Response: ACK 0x", $ackpacket, " (outstanding: ", 156 | $outstanding, ")\n"; 157 | if ( $outstanding == 0 ) { 158 | $acktimeout = 0.0001; 159 | } 160 | } 161 | return 1; 162 | } 163 | 164 | sub uploadFile { 165 | my $fd = shift; 166 | my $address = shift; 167 | my $filename = shift; 168 | 169 | local $/ = undef; 170 | 171 | return undef if ( !open( FILE, $filename ) ); 172 | my $data = ; 173 | close FILE; 174 | 175 | while ( length $data ) { 176 | my $chunk = substr( $data, 0, 1024 ); 177 | 178 | my $restOfData = 179 | substr( $data, length($chunk), length($data) - length($chunk) ); 180 | 181 | print "Writing ", length($chunk), " bytes to 0x", 182 | sprintf( '%.8x', $address ), "; ", length($restOfData), 183 | " bytes left.\n"; 184 | 185 | if ( !writeChunk( $fd, $address, $chunk ) ) { 186 | print "uploadFile failed.\n"; 187 | exit 1; 188 | } 189 | 190 | $address += length($chunk); 191 | $data = $restOfData; 192 | } 193 | return 1; 194 | } 195 | 196 | sub uploadFile2 { 197 | my $fd = shift; 198 | my $address = shift; 199 | my $filename = shift; 200 | my $response; 201 | 202 | my %sentPackets = (); 203 | 204 | local $/ = undef; 205 | 206 | return undef if ( !open( FILE, $filename ) ); 207 | my $data = ; 208 | close FILE; 209 | 210 | while ( length $data ) { 211 | my $chunk = substr( $data, 0, 1024 ); 212 | 213 | my $restOfData = 214 | substr( $data, length($chunk), length($data) - length($chunk) ); 215 | 216 | print "Writing ", length($chunk), " bytes to 0x", 217 | sprintf( '%.8x', $address ), "; ", length($restOfData), 218 | " bytes left.\n"; 219 | 220 | return undef 221 | if ( !writeChunk2( $fd, $address, $chunk, \%sentPackets ) ); 222 | 223 | $address += length($chunk); 224 | $data = $restOfData; 225 | 226 | #select(undef, undef, undef, 0.1); 227 | } 228 | 229 | my $numout = scalar keys %sentPackets; 230 | 231 | while ( $numout > 0 ) { 232 | if ( !( $response = readPacket( $fd, 5.0 ) ) ) { 233 | print "Failed to receive ACK for ", $numout, " packets\n"; 234 | foreach my $packet ( keys %sentPackets ) { 235 | print "Outstanding: 0x", $packet, "\n"; 236 | } 237 | exit 1; 238 | } 239 | 240 | my @responseBytes = unpack( 'C*', $response ); 241 | if ( scalar @responseBytes != 5 || $responseBytes[0] != 8 ) { 242 | print "Invalid Response: ", serialize($response), "\n"; 243 | exit 1; 244 | } 245 | 246 | my $ackpacket; 247 | $ackpacket = sprintf( 248 | '%.2x%.2x%.2x%.2x', 249 | $responseBytes[4], $responseBytes[3], 250 | $responseBytes[2], $responseBytes[1] 251 | ); 252 | 253 | delete $sentPackets{$ackpacket}; 254 | $numout = scalar keys %sentPackets; 255 | print "Response: ACK 0x", $ackpacket, " (outstanding: ", $numout, ")\n"; 256 | } 257 | 258 | return 1; 259 | } 260 | 261 | sub getSoftwareVersion { 262 | my $fd = shift; 263 | my $response; 264 | return undef if ( !sendPacket( $fd, deserialize("0c") ) ); 265 | 266 | return undef if ( !( $response = readPacket($fd) ) ); 267 | my @responseBytes = unpack( 'C*', $response ); 268 | if ( $responseBytes[0] != 0x0d ) { 269 | print "Invalid Response: ", serialize($response), "\n"; 270 | return undef; 271 | } 272 | return pack( 'C*', 273 | map { hex } split( /\s/, serialize( substr( $response, 2 ) ) ) ); 274 | } 275 | 276 | sub setupTTY { 277 | my $tty; 278 | my $fd; 279 | my @usbDevices; 280 | 281 | my @devices = 282 | grep { !/\:/ && !/usb/ } 283 | map { ( split( /\//, $_ ) )[-1] } glob '/sys/bus/usb/devices/*'; 284 | 285 | foreach my $device (@devices) { 286 | my $product = getFile("/sys/bus/usb/devices/$device/idProduct"); 287 | my $vendor = getFile("/sys/bus/usb/devices/$device/idVendor"); 288 | 289 | next if ( !defined $product || !defined $vendor ); 290 | 291 | if ( $vendor eq '05c6' && $product eq '9008' ) { 292 | 293 | # it's us. 294 | my @drivers = grep /^$device:\d+\.\d+$/, 295 | map { ( split( /\//, $_ ) )[-1] } 296 | glob "/sys/bus/usb/devices/$device/$device:*"; 297 | 298 | foreach my $driver (@drivers) { 299 | 300 | my @ttys = 301 | map { ( split( /\//, $_ ) )[-1] } 302 | glob "/sys/bus/usb/devices/$device/$driver/tty*"; 303 | 304 | if ( scalar @ttys == 1 ) { 305 | $tty = "/dev/$ttys[0]"; 306 | } 307 | } 308 | } 309 | } 310 | 311 | if ( defined $tty ) { 312 | system "/bin/stty raw -iexten -echo < $tty"; 313 | return undef if ( !sysopen( $fd, $tty, O_RDWR | O_SYNC ) ); 314 | return ( $fd, $tty ); 315 | } 316 | return undef; 317 | } 318 | 319 | sub getFile { 320 | my $file = shift; 321 | 322 | local $/ = undef; 323 | 324 | return undef if ( !open( FILE, $file ) ); 325 | 326 | my $content = ; 327 | $/ = "\n"; 328 | close FILE; 329 | chomp $content; 330 | return $content; 331 | } 332 | 333 | sub execute { 334 | my $fd = shift; 335 | my $address = shift; 336 | my $response; 337 | 338 | if ( !sendPacket( $fd, deserialize( "05 " . serial32($address) ) ) ) { 339 | print "Failed to send packed\n"; 340 | return undef; 341 | } 342 | if ( !( $response = readPacket( $fd, 5.0 ) ) ) { 343 | print "Failed to get response.\n"; 344 | return undef; 345 | } 346 | 347 | my @responseBytes = unpack( 'C*', $response ); 348 | if ( scalar @responseBytes != 1 || $responseBytes[0] != 2 ) { 349 | print "Invalid Response: ", serialize($response), "\n"; 350 | exit 1; 351 | } 352 | return 1; 353 | } 354 | 355 | sub serialize { 356 | my $buffer = shift; 357 | 358 | return join( ' ', map { sprintf( '%.2x', $_ ) } unpack( 'C*', $buffer ) ); 359 | } 360 | 361 | sub deserialize { 362 | my $buffer = shift; 363 | 364 | return pack( 'C*', map { hex } split( /\s+/, $buffer ) ); 365 | } 366 | 367 | sub crcByte { 368 | my $crc = shift; 369 | my $c = shift; 370 | 371 | return ( ( $crc >> 8 ) & 0xffff ) ^ $crcTable[ ( $crc ^ $c ) & 0xff ]; 372 | } 373 | 374 | sub crc { 375 | my $crc = shift; 376 | my $buffer = shift; 377 | 378 | my @bytes = unpack( 'C*', $buffer ); 379 | 380 | foreach (@bytes) { 381 | $crc = crcByte( $crc, $_ ); 382 | } 383 | return ~$crc & 0xffff; 384 | } 385 | 386 | sub swap16 { 387 | my $short = shift; 388 | 389 | return ( ( $short << 8 ) | ( $short >> 8 ) ) & 0xffff; 390 | } 391 | 392 | sub swap32 { 393 | my $long = shift; 394 | 395 | return ( ( $long << 24 ) | ( ( $long & 0xff00 ) << 8 ) | 396 | ( ( $long & 0xff0000 ) >> 8 ) | ( $long >> 24 ) ); 397 | } 398 | 399 | sub setupPacket { 400 | my $packet = shift; 401 | 402 | my $crc = swap16( crc( 0xffff, $packet ) ); 403 | return deserialize( "7e " 404 | . serialize( escape( $packet . deserialize( serial16($crc) ) ) ) 405 | . " 7e" ); 406 | } 407 | 408 | sub escape { 409 | my $buffer = shift; 410 | my @bytes = unpack( 'C*', $buffer ); 411 | my @newBytes; 412 | foreach my $byte (@bytes) { 413 | if ( $byte == 0x7e ) { 414 | push @newBytes, 0x7d; 415 | push @newBytes, 0x5e; 416 | } 417 | elsif ( $byte == 0x7d ) { 418 | push @newBytes, 0x7d; 419 | push @newBytes, 0x5d; 420 | } 421 | else { 422 | push @newBytes, $byte; 423 | } 424 | } 425 | 426 | return pack( 'C*', @newBytes ); 427 | } 428 | 429 | sub unescape { 430 | my $buffer = shift; 431 | my @bytes = unpack( 'C*', $buffer ); 432 | my @newBytes; 433 | my $escape = 0; 434 | 435 | foreach my $byte (@bytes) { 436 | if ($escape) { 437 | if ( $byte == 0x5e ) { 438 | push @newBytes, 0x7e; 439 | } 440 | elsif ( $byte == 0x5d ) { 441 | push @newBytes, 0x7d; 442 | } 443 | else { 444 | print "Fatal error unescaping buffer!\n"; 445 | return undef; 446 | } 447 | $escape = 0; 448 | } 449 | else { 450 | if ( $byte == 0x7d ) { 451 | $escape = 1; 452 | } 453 | else { 454 | push @newBytes, $byte; 455 | } 456 | } 457 | } 458 | return pack( 'C*', @newBytes ); 459 | } 460 | 461 | sub serial16le { 462 | my $short = shift; 463 | my $lbyte = $short & 0xff; 464 | my $hbyte = $short >> 8; 465 | 466 | return sprintf( '%.2x %.2x', $lbyte, $hbyte ); 467 | } 468 | 469 | sub serial32le { 470 | my $long = shift; 471 | 472 | my $lshort = $long & 0xffff; 473 | my $hshort = $long >> 16; 474 | 475 | return serial16le($lshort) . ' ' . serial16le($hshort); 476 | } 477 | 478 | sub serial16 { 479 | my $short = shift; 480 | my $lbyte = $short & 0xff; 481 | my $hbyte = $short >> 8; 482 | 483 | return sprintf( '%.2x %.2x', $hbyte, $lbyte ); 484 | } 485 | 486 | sub serial32 { 487 | my $long = shift; 488 | 489 | my $lshort = $long & 0xffff; 490 | my $hshort = $long >> 16; 491 | 492 | return serial16($hshort) . ' ' . serial16($lshort); 493 | } 494 | 495 | sub readPacket { 496 | my $fd = shift; 497 | my $timeout = shift; 498 | 499 | my $rfhbits = ""; 500 | my $byte; 501 | 502 | if ( defined($timeout) ) { 503 | vec( $rfhbits, fileno($fd), 1 ) = 1; 504 | return undef unless select( $rfhbits, undef, undef, $timeout ) >= 0; 505 | return undef unless vec( $rfhbits, fileno($fd), 1 ); 506 | } 507 | 508 | my $retval = sysread( $fd, $byte, 1 ); 509 | 510 | if ( 0 && !$retval ) { 511 | print "readPacket_retval: $retval\n"; 512 | print "$!\n"; 513 | } 514 | 515 | return undef if ( !$retval ); 516 | return undef if ( unpack( 'C', $byte ) != 0x7e ); 517 | 518 | my @bytes; 519 | 520 | while (1) { 521 | $retval = sysread( $fd, $byte, 1 ); 522 | if ( !$retval ) { 523 | if (0) { 524 | print "retval (while): $retval\n"; 525 | print "$!\n"; 526 | } 527 | return undef; 528 | } 529 | last if ( unpack( 'C', $byte ) == 0x7e ); 530 | push @bytes, unpack( 'C', $byte ); 531 | } 532 | my $buffer = unescape( pack( 'C*', @bytes ) ); 533 | 534 | #print "RECEIVED: " . serialize($buffer) . "\n"; 535 | @bytes = unpack( 'C*', $buffer ); 536 | pop @bytes; 537 | pop @bytes; 538 | return deserialize( join( ' ', map { sprintf( '%.2x', $_ ) } @bytes ) ); 539 | } 540 | 541 | sub sendPacket { 542 | my $fd = shift; 543 | my $buffer = shift; 544 | 545 | #print "SENDING: ", serialize(setupPacket($buffer)), "\n"; 546 | 547 | my $retval = 548 | syswrite( $fd, setupPacket($buffer), length( setupPacket($buffer) ) ); 549 | 550 | if ( !$retval ) { 551 | print "$!\n"; 552 | } 553 | 554 | return undef if ( !$retval ); 555 | return 1; 556 | } 557 | 558 | sub doMagic { 559 | my $fd = shift; 560 | my $response; 561 | print "Sending MAGIC...\n"; 562 | writeMagic($fd); 563 | my $haveGoodResponse = 0; 564 | my $haveErrorResponse = 0; 565 | my $haveUnknownResponse = 0; 566 | while ( $response = readPacket( $fd, 2 ) ) { 567 | my @responseBytes = unpack( 'C*', $response ); 568 | if ( scalar @responseBytes > 35 && $responseBytes[0] == 0x02 ) { 569 | my $magicCodeCheck = "QCOM fast download protocol targ"; 570 | my $magicCodeRecvd = substr( $response, 1, 32 ); 571 | if ( $magicCodeRecvd eq $magicCodeCheck ) { 572 | $haveGoodResponse = 1; 573 | } 574 | } 575 | elsif ( $responseBytes[0] == 0x0e ) { 576 | 577 | # msg 578 | my $msg = pack( 'C*', 579 | map { hex } 580 | split( /\s/, serialize( substr( $response, 1 ) ) ) ); 581 | $msg =~ tr/\n/ /; 582 | $msg =~ tr/\r/ /; 583 | print "MSG: ", $msg, "\n"; 584 | } 585 | elsif ( $responseBytes[0] == 0x0d ) { 586 | 587 | # error 588 | $haveErrorResponse = 1; 589 | my $msg = pack( 'C*', 590 | map { hex } 591 | split( /\s/, serialize( substr( $response, 5 ) ) ) ); 592 | $msg =~ tr/\n//d; 593 | $msg =~ tr/\r//d; 594 | print "ERROR: ", $msg, "\n"; 595 | } 596 | else { 597 | $haveUnknownResponse = 1; 598 | print "Response: ", serialize($response), "\n"; 599 | } 600 | } 601 | if ( $haveGoodResponse != 1 602 | || $haveErrorResponse == 1 603 | || $haveUnknownResponse == 1 ) 604 | { 605 | print "Invalid MAGIC response.\n"; 606 | exit 1; 607 | } 608 | } 609 | 610 | sub doSoftwareVersion { 611 | my $fd = shift; 612 | my $response; 613 | print "Requesting SoftwareVersion...\n"; 614 | my $swver = getSoftwareVersion($fd); 615 | if ( !defined $swver ) { 616 | print "Failed to get software version\n"; 617 | exit 1; 618 | } 619 | print "Version: $swver\n"; 620 | } 621 | 622 | sub doRequestDload { 623 | my $fd = shift; 624 | my $response; 625 | print "Requesting Dload...\n"; 626 | if ( !sendPacket( $fd, deserialize("3a") ) ) { 627 | print "Failed requestDload\n"; 628 | exit 1; 629 | } 630 | print "requestDload send ok\n"; 631 | 632 | if ( !( $response = readPacket($fd) ) ) { 633 | print "Failed to read response.\n"; 634 | exit 1; 635 | } 636 | print "Param: ", serialize($response), "\n"; 637 | } 638 | 639 | sub doReboot { 640 | my $fd = shift; 641 | my $response; 642 | print "Requesting Reboot...\n"; 643 | if ( !sendPacket( $fd, deserialize("0a") ) ) { 644 | print "Failed requestReboot\n"; 645 | exit 1; 646 | } 647 | print "requestReboot send ok\n"; 648 | 649 | if ( !( $response = readPacket($fd) ) ) { 650 | print "Failed to read response.\n"; 651 | exit 1; 652 | } 653 | print "Param: ", serialize($response), "\n"; 654 | } 655 | 656 | sub doRequestParam { 657 | my $fd = shift; 658 | my $response; 659 | print "Requesting Params...\n"; 660 | if ( !sendPacket( $fd, deserialize("07") ) ) { 661 | print "Failed requestParam\n"; 662 | exit 1; 663 | } 664 | 665 | if ( !( $response = readPacket($fd) ) ) { 666 | print "Failed to read response.\n"; 667 | exit 1; 668 | } 669 | 670 | my @responseBytes = unpack( 'C*', $response ); 671 | if ( $responseBytes[0] != 8 ) { 672 | print "Invalid Response: ", serialize($response), "\n"; 673 | exit 1; 674 | } 675 | print "Params: ", serialize( substr( $response, 1 ) ), "\n"; 676 | } 677 | 678 | ##### 679 | ##### second stage cmds 680 | ##### 681 | 682 | sub doCloseFlush { 683 | my $fd = shift; 684 | my $response; 685 | print "Sending CloseFlush...\n"; 686 | if ( !sendPacket( $fd, deserialize("15") ) ) { 687 | print "Failed CloseFlush\n"; 688 | exit 1; 689 | } 690 | 691 | if ( !( $response = readPacket( $fd, 2.0 ) ) ) { 692 | print "Failed to read response.\n"; 693 | exit 1; 694 | } 695 | 696 | my @responseBytes = unpack( 'C*', $response ); 697 | if ( scalar @responseBytes != 1 || $responseBytes[0] != 0x16 ) { 698 | print "Invalid Response: ", serialize($response), "\n"; 699 | exit 1; 700 | } 701 | } 702 | 703 | sub doSecureMode { 704 | my $fd = shift; 705 | my $response; 706 | print "Sending secureMode...\n"; 707 | if ( !sendPacket( $fd, deserialize("17 01") ) ) { 708 | print "Failed secureMode\n"; 709 | exit 1; 710 | } 711 | 712 | if ( !( $response = readPacket( $fd, 2.0 ) ) ) { 713 | print "Failed to read response.\n"; 714 | exit 1; 715 | } 716 | 717 | my @responseBytes = unpack( 'C*', $response ); 718 | if ( scalar @responseBytes != 1 || $responseBytes[0] != 0x18 ) { 719 | print "Invalid Response: ", serialize($response), "\n"; 720 | exit 1; 721 | } 722 | } 723 | 724 | sub doOpenMulti { 725 | my $fd = shift; 726 | my $response; 727 | print "Sending openMulti ...\n"; 728 | if ( !sendPacket( $fd, deserialize("1b 21") ) ) { 729 | print "Failed openMulti\n"; 730 | exit 1; 731 | } 732 | my $haveGoodResponse = 0; 733 | my $haveErrorResponse = 0; 734 | my $haveUnknownResponse = 0; 735 | while ( $response = readPacket( $fd, 2 ) ) { 736 | my @responseBytes = unpack( 'C*', $response ); 737 | if ( scalar @responseBytes == 2 738 | && $responseBytes[0] == 0x1c 739 | && $responseBytes[1] == 0 ) 740 | { 741 | $haveGoodResponse = 1; 742 | } 743 | elsif ( $responseBytes[0] == 0x0e ) { 744 | 745 | # msg 746 | my $msg = pack( 'C*', 747 | map { hex } 748 | split( /\s/, serialize( substr( $response, 1 ) ) ) ); 749 | $msg =~ tr/\n/ /; 750 | $msg =~ tr/\r/ /; 751 | print "MSG: ", $msg, "\n"; 752 | } 753 | elsif ( $responseBytes[0] == 0x0d ) { 754 | 755 | # error 756 | $haveErrorResponse = 1; 757 | my $msg = pack( 'C*', 758 | map { hex } 759 | split( /\s/, serialize( substr( $response, 5 ) ) ) ); 760 | $msg =~ tr/\n//d; 761 | $msg =~ tr/\r//d; 762 | print "ERROR: ", $msg, "\n"; 763 | } 764 | else { 765 | $haveUnknownResponse = 1; 766 | print "Response: ", serialize($response), "\n"; 767 | } 768 | } 769 | if ( $haveGoodResponse != 1 770 | || $haveErrorResponse == 1 771 | || $haveUnknownResponse == 1 ) 772 | { 773 | print "Invalid openMulti response.\n"; 774 | exit 1; 775 | } 776 | } 777 | 778 | sub doReset2 { 779 | my $fd = shift; 780 | my $response; 781 | print "Requesting Reset...\n"; 782 | if ( !sendPacket( $fd, deserialize("0b") ) ) { 783 | print "Failed doReset\n"; 784 | exit 1; 785 | } 786 | 787 | if ( !( $response = readPacket( $fd, 2.0 ) ) ) { 788 | print "Failed to read response.\n"; 789 | exit 1; 790 | } 791 | 792 | my @responseBytes = unpack( 'C*', $response ); 793 | if ( scalar @responseBytes != 1 || $responseBytes[0] != 0x0c ) { 794 | print "Invalid Response: ", serialize($response), "\n"; 795 | exit 1; 796 | } 797 | } 798 | 799 | ### 800 | ### main stages 801 | ### 802 | 803 | sub doStage1 { 804 | my $fname = shift; 805 | my $retval; 806 | my $response; 807 | my ( $fd, $tty ) = setupTTY(); 808 | 809 | if ( !defined $fd ) { 810 | print "Failed to find/open TTY.\n"; 811 | exit 1; 812 | } 813 | 814 | while ( $response = readPacket( $fd, 0.1 ) ) { 815 | print "Ignoring response: ", serialize($response), "\n"; 816 | } 817 | 818 | doSoftwareVersion($fd); 819 | 820 | doRequestParam($fd); 821 | 822 | print "Uploading file '", $fname, "' to QDLOAD...\n"; 823 | exit 1 if !defined( uploadFile( $fd, 0x2a000000, $fname ) ); 824 | 825 | print "Executing file...\n"; 826 | execute( $fd, 0x2a000000 ); 827 | close($fd); 828 | } 829 | 830 | sub doStage2 { 831 | my $laddr = shift; 832 | my $lfname = shift; 833 | my $retval; 834 | my $response; 835 | my ( $fd, $tty ) = setupTTY(); 836 | 837 | if ( !defined $fd ) { 838 | print "Failed to find/open TTY.\n"; 839 | exit 1; 840 | } 841 | 842 | doMagic($fd); 843 | 844 | #closeFlush($fd); 845 | doSecureMode($fd); 846 | doOpenMulti($fd); 847 | print "Uploading file '", $lfname, "'...\n"; 848 | uploadFile2( $fd, $laddr, $lfname ); 849 | doCloseFlush($fd); 850 | ###doReset2($fd); 851 | close($fd); 852 | } 853 | 854 | sub doResetStage { 855 | my $retval; 856 | my $response; 857 | my ( $fd, $tty ) = setupTTY(); 858 | 859 | if ( !defined $fd ) { 860 | print "Failed to find/open TTY.\n"; 861 | exit 1; 862 | } 863 | 864 | doReset2($fd); 865 | 866 | close($fd); 867 | } 868 | 869 | sub doHelloCmd { 870 | my $cmd = shift; 871 | my $retval; 872 | my $response; 873 | my ( $fd, $tty ) = setupTTY(); 874 | 875 | if ( !defined $fd ) { 876 | print "Failed to find/open TTY.\n"; 877 | exit 1; 878 | } 879 | 880 | doMagic($fd); 881 | 882 | close($fd); 883 | } 884 | 885 | sub doTestCmd { 886 | my $cmd = shift; 887 | my $retval; 888 | my $response; 889 | my ( $fd, $tty ) = setupTTY(); 890 | 891 | if ( !defined $fd ) { 892 | print "Failed to find/open TTY.\n"; 893 | exit 1; 894 | } 895 | 896 | print "Sending cmd '", $cmd, "'\n"; 897 | if ( !sendPacket( $fd, deserialize($cmd) ) ) { 898 | print "Failed send\n"; 899 | exit 1; 900 | } 901 | 902 | while ( $response = readPacket( $fd, 2 ) ) { 903 | my @responseBytes = unpack( 'C*', $response ); 904 | if ( $responseBytes[0] == 0x0e ) { 905 | 906 | # msg 907 | my $msg = pack( 'C*', 908 | map { hex } 909 | split( /\s/, serialize( substr( $response, 1 ) ) ) ); 910 | $msg =~ tr/\n/ /; 911 | $msg =~ tr/\r/ /; 912 | print "MSG: ", $msg, "\n"; 913 | } 914 | elsif ( $responseBytes[0] == 0x0d ) { 915 | 916 | # error 917 | my $msg = pack( 'C*', 918 | map { hex } 919 | split( /\s/, serialize( substr( $response, 5 ) ) ) ); 920 | $msg =~ tr/\n//d; 921 | $msg =~ tr/\r//d; 922 | print "ERROR: ", $msg, "\n"; 923 | } 924 | else { 925 | print "Response: ", serialize($response), "\n"; 926 | } 927 | } 928 | 929 | close($fd); 930 | } 931 | 932 | sub doUsage { 933 | print "Usage: qdload --pfile \n"; 934 | print " | --lfile \n"; 935 | print " | --lfile --laddr \n"; 936 | print " | --lreset\n"; 937 | } 938 | 939 | ### 940 | ### main 941 | ### 942 | 943 | my $opts_result; 944 | my $opts_pfile; 945 | my $opts_lfile; 946 | my $opts_laddr; 947 | my $opts_lreset; 948 | my $opts_testcmd; 949 | my $opts_hellocmd; 950 | 951 | $opts_result = GetOptions( 952 | "pfile=s" => \$opts_pfile, 953 | "lfile=s" => \$opts_lfile, 954 | "laddr=o" => \$opts_laddr, 955 | "testcmd=s" => \$opts_testcmd, 956 | "hello" => \$opts_hellocmd, 957 | "lreset" => \$opts_lreset 958 | ); 959 | 960 | my $num_remaining_args = $#ARGV + 1; 961 | 962 | if ( $num_remaining_args > 0 ) { 963 | doUsage(); 964 | exit(1); 965 | } 966 | 967 | if ( !defined($opts_pfile) 968 | && !defined($opts_lfile) 969 | && !defined($opts_lreset) 970 | && !defined($opts_hellocmd) 971 | && !defined($opts_testcmd) ) 972 | { 973 | doUsage(); 974 | exit(1); 975 | } 976 | 977 | if ( defined($opts_testcmd) ) { 978 | doTestCmd($opts_testcmd); 979 | exit(0); 980 | } 981 | 982 | if ( defined($opts_hellocmd) ) { 983 | doHelloCmd(); 984 | exit(0); 985 | } 986 | 987 | if ( defined($opts_pfile) ) { 988 | doStage1($opts_pfile); 989 | sleep(2); 990 | } 991 | 992 | if ( defined($opts_lfile) ) { 993 | my $addr = 0; 994 | if ( defined($opts_laddr) ) { 995 | $addr = $opts_laddr; 996 | } 997 | doStage2( $addr, $opts_lfile ); 998 | } 999 | 1000 | if ( defined($opts_lreset) ) { 1001 | doResetStage(); 1002 | } 1003 | 1004 | exit 0; 1005 | 1006 | -------------------------------------------------------------------------------- /unbrick.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | QDLOADID="05c6:9008" 3 | DLOADID="05c6:9008" 4 | SDMODE="05c6:9025" 5 | DEVICEID=/dev/disk/by-id/usb-Qualcomm_MMC_Storage-0\:0 6 | DEVICE=`ls -lah /dev/disk/by-id/ | grep usb\-Qualcomm_MMC | head -n 1 | awk '{ print $11 }' | sed 's/\..\/..//'` 7 | USBNAME=`lsusb | grep Qualcomm ` 8 | USBID=`lsusb | grep Qualcomm | awk '{ print $6 }'` 9 | 10 | chmod 0755 binaries/* 11 | chmod 0755 scripts/* 12 | chmod -R 0755 adb/* 13 | chmod -R 0777 devices/* 14 | chmod -R 0777 hexmbn/* 15 | 16 | printf '\033c' 17 | if [ $(whoami) != "root" ]; then 18 | echo -e "\e[00;31mError:\e[00m Not running as root. Exiting." 19 | exit 1 20 | fi 21 | 22 | echo -e "\033[38;5;148munbrick_8960 v1.1\033[39m" 23 | echo "" 24 | echo "Originally by Darkspr1te, forked by aureljared." 25 | echo "See README for credits." 26 | echo "---------------------------------------------" 27 | echo "" 28 | 29 | echo "Available device files:" 30 | ls devices/ 31 | echo "" 32 | echo -n "Enter your device model from above, case-sensitive: " 33 | read MODEL 34 | if [ ! $(ls devices/ | grep $MODEL) ]; then 35 | echo "" 36 | echo "Invalid device model! Exiting." 37 | exit 1 38 | else 39 | MODELDIR="devices/$MODEL" 40 | fi 41 | echo -e "\n---------------------------------------------" 42 | echo "" 43 | echo "Supported chips:" 44 | ls hexmbn/chips/ 45 | echo "" 46 | echo -n "Enter your chip model from above, case-sensitive: " 47 | read chip 48 | if [ $chip == "msm8930" ]; then 49 | appendchip="8930" 50 | elif [ $chip == "msm8960" ]; then 51 | appendchip="8960" 52 | elif [ $chip == "apq8064" ]; then 53 | appendchip="8064" 54 | else 55 | echo "" 56 | echo "Invalid chip model! Exiting." 57 | exit 1 58 | fi 59 | hexfile="MPRG$appendchip.hex" 60 | mbnfile=""$appendchip"_msimage.mbn" 61 | 62 | printf '\033c' 63 | echo -n "Checking for Qualcomm devices in QDLOAD mode... " 64 | if [ $USBID == $DLOADID ]; then 65 | echo -e "found!" 66 | choice="n" 67 | 68 | echo -e -n "\nDo you wish to upload MPRG$appendchip.hex & "$appendchip"_msimage.mbn now? [y/n]: " 69 | read -n 1 choice 70 | 71 | if [ $choice == "y" ]; then 72 | echo -e "\nExecuting qdload.pl..." 73 | echo "" 74 | perl scripts/qdload.pl -pfile hexmbn/chips/$chip/$hexfile -lfile hexmbn/chips/$chip/$mbnfile -lreset 75 | echo "" 76 | echo "If HEX/MBN uploaded correctly, please wait a while and re-run unbrick.sh" 77 | echo "to continue the unbricking session. A screen showing device options may appear;" 78 | echo "close this new screen." 79 | echo "" 80 | echo "If there was any error, do NOT disconnect device (or else you might not" 81 | echo "get it to connect anymore)! Try running script again." 82 | exit 0 83 | else 84 | echo "" 85 | echo "Operation cancelled. Exiting." 86 | exit 1 87 | fi 88 | else 89 | echo -e "not found.\n" 90 | fi 91 | 92 | echo -e -n "\e[00m" 93 | echo -n "Checking for Qualcomm devices in SDBOOT mode... " 94 | if [ $USBID == $SDMODE ]; then 95 | echo -e "found!" 96 | echo -e "\nLocation: device node /dev$DEVICE" 97 | echo -e "with USB PID/VID ID of \e[00;44m$USBID\e[00;31m" 98 | echo "Detailed output is" 99 | echo -e "\e[00;33m$USBNAME\e[00m" 100 | 101 | # Write back the MBR to sector 0 and EBF to sector 208801 102 | echo "" 103 | echo "Do you wish to write the MBR? \e[00;31mWarning, dangerous!\e[00m" 104 | read -n 1 choice 105 | echo "" 106 | if [ $choice == "y" ]; then 107 | echo "Writing to /dev$DEVICE" 108 | dd if=$MODELDIR/partition0.bin of=/dev$DEVICE seek=0 count=1 bs=512 109 | dd if=$MODELDIR/partition0.bin of=/dev$DEVICE skip=1 seek=208801 count=22 bs=512 110 | 111 | choice="n" 112 | echo "" 113 | fi 114 | 115 | # SMD_HDR is unknown at the moment. Uncomment at your own risk 116 | # dd if=smd_hdr.mbn of=/dev/sdb seek=1 count=102400 bs=512 117 | 118 | # These next few lines are for bootloader repair (to get ODIN mode). 119 | # If you know what is corrupt then flash only that file. 120 | echo -e "Do you wish to write bootloaders? \e[00;31mWarning, dangerous!\e[00m" 121 | read -n 1 choice 122 | echo "" 123 | if [ $choice == "y" ]; then 124 | echo "Writing bootloaders to /dev$DEVICE" 125 | echo " - secondary bootloader" 126 | dd if=$MODELDIR/sbl1.mbn of=/dev$DEVICE seek=131072 count=500 bs=512 127 | dd if=$MODELDIR/sbl2.mbn of=/dev$DEVICE seek=131328 count=1500 bs=512 128 | dd if=$MODELDIR/sbl3.mbn of=/dev$DEVICE seek=131840 count=2048 bs=512 129 | echo "- AP bootloader" 130 | dd if=$MODELDIR/aboot.mbn of=/dev$DEVICE seek=132864 count=2500 bs=512 131 | echo "- resource power manager" 132 | dd if=$MODELDIR/rpm.mbn of=/dev$DEVICE seek=136960 count=500 bs=512 133 | 134 | choice="n" 135 | echo 136 | fi 137 | 138 | # boot.img only needed if it's damaged on the device. 139 | # dd if=$MODELDIR/boot.img of=/dev/sdb seek=137984 count=10240 bs=512 140 | 141 | echo -e "Do you wish to write TrustZone? \e[00;31mWarning, dangerous!\e[00m" 142 | read -n 1 choice 143 | echo 144 | if [ $choice == "y" ]; then 145 | echo "Writing TrustZone to /dev/$DEVICE" 146 | dd if=$MODELDIR/tz.mbn of=/dev$DEVICE seek=158464 count=500 bs=512 147 | fi 148 | 149 | echo "" 150 | echo "If no errors occurred then disconnect and reinsert battery." 151 | echo "If ANY error occurred, do not disconnect device, fix error and rerun or seek advice." 152 | else 153 | echo "not found." 154 | echo "" 155 | echo -e "\e[00;31mError:\e[00m No Qualcomm device found. Check cables, run lsusb and verify the device is connected." 156 | echo "" 157 | exit 1 158 | fi 159 | 160 | unset -v choice 161 | 162 | exit 0 163 | --------------------------------------------------------------------------------