Як прибрати зайві COM порти
Як позбутися великої кількості COM портів?
Є bluetooth модуль hc-05, та bluetooth донгла з відомого китайського сайту. При поєднанні в диспетчері пристроїв з'являється ціла купа портів COM. У цьому реально робочий їх - один (підключається і дані передаються). Як виправити цю проблему?
А в чому власне проблема? працює? працює. не глючить? ні. ну і не треба його чіпати.Проблема в тому, що не всі порти працюють, з усіх - putty і Terminal 1.9 підключаться тільки до одного, і доводиться перебирати весь цей список - щоб знайти один ліквідний.
доводиться перебирати весь цей список – щоб знайти один Диспетчер пристроїв - Вигляд - Пристрої для підключення, і дивись, до якого порту підключається потрібне обладнання. Знову ж таки ніхто не заважає один раз там же відключити всі "непотрібні" порти (проблеми в майбутньому з підключенням іншого обладнання - за свій рахунок).
Дивно, у мене в пристроях по підключенню взагалі немає портів. Але ідею я зрозумів, дякую за відповідь. Просто мені не подобається сам факт такого стану речей. Хотілося зрозуміти причину, через яку так відбувається і по можливості її виправити.
Стаття
При приєднанні абсолютно нового COM пристрою або USB-пристрою, Windows виявляє завдяки Plug-n-Play і присвоює йому номер COM порту в діапазоні від 1 до 255. Якщо ви підключаєте пристрій ще раз, йому прикріплюється той же, зарезервований за ним раніше COM порт. Якщо ви підключаєте ще один новий пристрій, то йому призначається інший незайнятий номер COM порту.
Деякі програми (частіше старі) здатні працювати тільки на двозначних номерах COM портів, і не працюють з COM100 і більше. Деякі дуже стародавні програми працюють лише портами з COM1-COM9. Як зробити, якщо пристрій отримав непотрібний COM порт? Чи можна видалити номер зарезервованого порту COM?
Зміна номера COM порту для програми або пристрою
Насамперед варто спробувати вручну перевизначити номер COM порту для певного COM-пристрою. Припустимо необхідний COM порт вже зайнятий, і ми хочемо спробувати його звільнити.
- Запустимо диспетчер пристроїв (Device Manager) таким чином: set devmgr_show_nonpresent_devices=1
start devmgmt.msc - У меню консолі виберемо View->Show Hidden Devices.
- Розгорніть гілку Ports (COM &LPT) і в списку знайдіть пристрій, якому призначено потрібний COM порт (бліда іконка означає, що даний COM порт призначений, але зараз цей пристрій не підключено). Клацніть на ньому ПКМ і виберіть Uninstall
- Звільнений COM порт може бути призначений для іншого пристрою. Знайдіть у цій же гілці свій пристрій, відкрийте вікно його властивостей (Properties). Потім перейдіть на вкладку PortSettings та натисніть кнопку Advanced. У списку, що випадає, виберіть COM порт, що не використовується.
Наведена вище методика який завжди дозволяє звільнити зайнятий COM порт. У цьому випадку доведеться вдатися до редагування реєстру.
Скидання прив'язок COM портів через реєстр
Інформація про COM порти, що використовуються, зберігається в ключі реєстру. CommDB у розділіHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter
-
Відкрийте редактор реєстру (regedit) і перейдіть у вказану гілку.
Важливо! Рекомендуємо заздалегідь створити резервну копію даної гілки реєстру (File -> Export). Якщо щось піде не так, ви зможете повернутися до початкової конфігурації портів.
Важливо! Будьте дуже уважними, ні в якому разі не додайте в цей параметр додаткові байти, інакше система може почати падати в BSOD.
Примітка. У розділі HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM можна побачити список COM портів, підключених до системи.
Очищення зайнятих COM портів у Windows
Коли ви підключаєте до комп'ютера нове COM або деякі USB пристрої (наприклад, USB модем, мобільний телефон, Bluetooth адаптер, конвертерів послідовних портів USB і т.п.), Windows визначає його через механізм Plug-n-Play і призначить йому номер COM порту в діапазоні від 1 до 255 (COM1, COM2, COM3 тощо). При повторному підключенні цього пристрою, йому призначається номер COM порту (Communication Port, або Serial port), зарезервований за ним раніше. Новим пристроям видається перший незайнятий номер порту COM. Не рідкість, коли зовнішні пристрої при підключенні створюють відразу кілька портів COM (у моєму випадку після підключення адаптера Bluetooth, в системі з'явилося відразу 10. нових COM портів).
Ряд додатків (як правило, досить давніх) здатні адресувати тільки двозначні номери COM портів, і відмовляються працювати з COM100 і вище. Або бачать лише COM1-COM9 пристрої. Що робити, якщо підключений пристрій отримав високий номер порту COM? Чи можна скинути нумерацію для зарезервованих портів COM і видалити призначені порти?
Змінити номер COM порту пристрою у Windows
У Windows можна вручну змінити номер порту COM, призначений для пристрою. Припустимо необхідний COM порт вже зайнятий, і ми хочемо спробувати його звільнити. Для цього:
- Відкрийте диспетчер пристроїв (Device Manager) командою devmgmt.msc;
- У меню виберіть View->Show Hidden Devices;
- Потім розгорніть Ports (COM & LPT) та знайдіть у списку пристрій;
- Перейдіть на вкладку Port Settings та натисніть кнопку Advanced;
- Поточний номер COM порту, призначений для пристрою вказаний у полі COMPortНомер;
- Щоб змінити його, розкрийте список, що випадає, і виберіть номер COMпорту, який хочете задати.
Але найчастіше змінити номер COM порт на інший не вийде, тому що всі низькі COM порт вже використовуються (in use);
Однак такий спосіб дозволяє звільнити зайнятий COM порт не завжди.
Ви можете вивести повний список зайнятих COM портів у Windows за допомогою PowerShell:Get-WMIObject Win32_SerialPort | Select-Object Name,DeviceID,Description
Можна визначити номер COM порту для певного пристрою на його ім'я, наприклад:
Get-WMIObject Win32_SerialPort | Where-Object < $_.Name -like "*Arduino*">|select name, deviceid
Або
Get-WMIObject Win32_SerialPort | Where-Object < $_.Name -like "*GPS*">|select name, deviceid
Визначаємо процес, який використовує COM у Windows
Ви не зможете звільнити COM порт пристрою, який використовується Windows або запущеною програмою процесом. Спочатку вам потрібно завершити процес/програму, яка використовує зараз COM порт. Щоб визначити ім'я процесу, який використовує COM порт знадобиться утиліта Process Explorer (https://docs.microsoft.com/en-gb/sysinternals/downloads/process-explorer).
Спочатку потрібно вивести ім'я служби, яка використовує COM порт. Виконайте команду PowerShell:
get-pnpdevice -class Ports -ea 0| Select Name, PNPDeviceID, Status, Service
Ім'я служби цього COM порту вказано у стовпці Service. Наприклад, для COM2 це Serial. Тепер потрібно запустити Process Explorer із правами адміністратора та вибрати в меню Find -> Find Handle або DLL. У рядку Hangde або DLL substring введіть значення Service, отримане раніше. У нашому прикладі це Serial.
Process Explorer повинен показати процес, який зараз використовує ваш COM порт. Щоб звільнити COM порт, завершіть процес або програму.
Скидання призначених COM портів Windows через реєстр
Інформація про COM порти, що використовуються, зберігається в ключі реєстру. CommDB у розділі HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter
-
Відкрийте редактор реєстру (regedit.exe) і перейдіть у вказану гілку.
Важливо! Рекомендуємо заздалегідь створити резервну копію даної гілки реєстру (File -> Export). Якщо щось піде не так, ви зможете повернутися до початкової конфігурації COM портів.
Важливо! Будьте дуже уважними, ні в якому разі не додайте в цей параметр додаткові байти, інакше система може почати падати в BSOD.
Примітка. У розділі HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM можна побачити повний список COM портів, доступних у Windows. HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM можна побачити список COM портів, підключених до системи.
Також ви можете використовувати наступні дві безкоштовні утиліти для очищення зайнятих (In Use) COM портів:
- COM Name ArbiterTool - Утиліта для звільнення зайнятих COM портів. Запустіть утиліту з правами адміністратора, виберіть COM порти, які ви хочете звільнити та натисніть Clear unused Reservationsта Remove non-present devices;
- Device Cleanup Tool – утиліта використовується для пошуку в реєстрі інформації про раніше підключені пристрої (у гілці HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum) та видалення невикористовуваних пристроїв та очищення резервацій COM портів.
Антон 02.02.2016 Вже року 4 як не бачив комп'ютера з COM-портом, а ви тут COM пристрої препарувати удумали Відповісти
Andrew 02.02.2016 Антуан, вже року 4 як не бачив комп'ютера з COM-портом, мучаюся, доводиться користуватися перехідниками, ПК не тільки для вконтакту. Відповісти
Іван 30.04.2019 Вибач, але комп'ютери існують не тільки для іграшок та вконтактиків. Я за кілька років бачив кілька десятків комп'ютерів з комп'ютерами. Відповісти
Stanner 14.02.2016 Ті, хто часто перепрошує гаджети на МТК, стикається з проблемою COM-портів, що поступово займаються.
На даний момент я, як і раніше, із задоволенням користуюсь двома утилітами цього автора:
- COM Name Arbiter Setter для звільнення портів
— Device Cleanup Tool для очищення від старих непідключених пристроїв Відповісти
Валерій 14.04.2016 Здравствуйте, чи можливо прив'язати usb-сом перехідник до конкретного сом порту?
Ільшат 09.06.2016 Не я один виявляється такий.Ільшат 09.06.2016 Доброго дня.
Проблема у мене з com портом, а точніше після кожного перезавантаження Сканер штрих кодів бере собі новий порт і щоразу у користувача в налаштуваннях 1С треба по новій вказувати новий порт. так відбувається? Різні сканери спробував (однієї і тієї ж модель), все так само змінюють. Може тому що харчування не вистачає сканер через USB HUB з додатковим лихо. варіант (
Windows 7 x64 Pro Відповісти
itpro 10.06.2016 Спробуйте так:
1) Визначте Vendor ID (VID) і Product ID (PID) вашого USB хаба через через диспетчер пристроїв
2) У реєстрі у гілці HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags створіть ключ IgnoreHWSerNumXXXXYYYY=hex:01, де XXXX = VID, а YYYY = PID
3) Ребуут Відповісти
Микола 11.07.2019 На одному комп'ютері з постійною періодичністю злітає номер COM порту. Підключений девайс повинен бути завжди COM9. злітати і як виправити?
Віктор 24.03.2022 Доброго дня.
Можливо, хтось підкаже.
Існують ПК до яких постійно підключено пристрій usb.Воно завжди в одному порту і не вимикається. Поки не визначив після перезавантаження або якось інакше, але цей пристрій в якийсь момент визначається під іншим COM портом і з ним зникає зв'язок. Чим може бути спричинена мимовільна зміна порту, як це вилікувати? Відповісти
Олександр 27.03.2022 Чим може бути викликана мимовільна зміна порту, як це вилікувати?
— Може статися через кілька причин. 1. Погана ізоляція у деайса, девайс рестартує. 2 Драйвер злітає. Відповісти
Олександр 19.05.2023 Від проблем із блоком живлення, транзисторами на виході USB матплати, до відключення пристрою для економії енергії або нестабільної роботи драйверів та ОС. Загалом десятки варіантів можуть бути, починаючи від заліза до софтових проблем. Це якщо з самим пристроєм все гаразд і інших ПК такого не спостерігається. Відповісти
serg 03.02.2023 Microsoft нарешті виправила свою баго фічу. Починаючи з Windows 10 1903 як тепер виявляється при видаленні пристрою з device manager (приховані пристрої з призначеними com портами) видаляються і резервації номерів COM портів. Не потрібні танці з бубном. Відповісти
Андрій 03.03.2023 Чудовий матеріал, дуже актуальний! Як добре, що є такі сайти. ВідповістиАндрій 03.03.2023
Electronic Team Virtual Serial Port (COM_3) VSBC9\DEVICES\0000 Unknown
Electronic Team VSPort Controlling Device for COM_3 VSBC9\DEVICES\0001 Unknown
Electronic Team Virtual Serial Port (COM-3) VSBC9\DEVICES\0002 Unknown
Electronic Team VSPort Controlling Device for COM-3 VSBC9\DEVICES\0003 Unknown
Electronic Team Virtual Serial Port (COM-3) VSBC9\DEVICES\0004 Unknown
Electronic Team VSPort Controlling Device for COM-3 VSBC9\DEVICES\0005 Unknown
Electronic Team Virtual Serial Port (COM__6) VSBC9\DEVICES\0006 Unknown
Electronic Team VSPort Controlling Device for COM__6 VSBC9\DEVICES\0007 Unknown
Electronic Team Virtual Serial Port (COM_11) VSBC9\DEVICES\0008 Unknown
Electronic Team VSPort Controlling Device for COM_11 VSBC9\DEVICES\0009 Unknown
Electronic Team Virtual Serial Port (COM__11) VSBC9\DEVICES\0010 Unknown
Electronic Team VSPort Controlling Device for COM__11 VSBC9\DEVICES\0011 Unknown
Так само хочу запитати, вивів списком і в мене залишилися сліди від програми де вони знайти не можу так як порти називав необчно це спеціальна програма, як вирішити це як їх знайти та видалити? Відповісти
Михайло 08.03.2023 при написанні(копіювання) вашого рядка get-pnpdevice -class Ports -ea 0| Select Name, PNPDeviceID, Status, Service пише щось все в червоному кольорі і посилається на якусь ошмбку в написанні рядок1 знак14.Що не так у цьому є? Допоможіть! Відповісти
itpro 15.03.2023 Яка ОС та версія PowerShell?У 5.1 і вище команда працює Відповісти
Михайло 08.03.2023 get-pnpdevice -class Ports -ea 0| Select Name, PNPDeviceID, Status, Service при копіюванні цього видає помилку з посиланням на рядок1 знак14. Щось не так. Допоможіть очистити сом порт 1 або 2 який зайнятий чимось але ні як не можу подолати його. Відповісти