যখন আপনি কম্পিউটারে একটি নতুন COM ডিভাইস বা USB ডিভাইস সংযুক্ত করেন (USB মডেম, মোবাইল ফোন, ব্লুটুথ অ্যাডাপ্টার, সিরিয়াল-টু-USB কনভার্টার ইত্যাদি), উইন্ডোজ প্লাগ-এন্ড-প্লে ব্যবহার করে এটি শনাক্ত করে এবং ১ থেকে ২৫৫ রেঞ্জের মধ্যে একটি COM পোর্ট নম্বর বরাদ্দ করে (COM1, COM2, COM3, ইত্যাদি)। একই ডিভাইসটি পুনরায় সংযুক্ত করলে, সংরক্ষিত COM (Communication বা Serial) পোর্ট নম্বরটি এসে থাকে। একটি নতুন ডিভাইস প্রথম খালি COM পোর্ট নম্বর পায়। প্রায়ই দেখা যায় বাহ্যিক ডিভাইস সংযুক্ত করার সাথে একসাথে একাধিক COM পোর্ট তৈরি হয়। আমার কেসে ব্লুটুথ অ্যাডাপ্টার সংযুক্ত করার পর সিস্টেমে ১০টি!!! নতুন COM পোর্ট দেখতে পেলাম।
অনেক পুরনো অ্যাপ্লিকেশন শুধু দুটি অঙ্কের COM পোর্ট নম্বর সমর্থন করে এবং COM100 বা তার উপরের পোর্ট নিয়ে কাজ করতে পারে না। সবচেয়ে খারাপ কেসে, এই প্রোগ্রামগুলো শুধু COM1-COM9 পোর্টের সাথে কাজ করে। যদি কোন ডিভাইসকে উচ্চ COM পোর্ট নম্বর বরাদ্দ হয়ে যায় তবে কী করবেন? সংরক্ষিত COM পোর্টের নম্বরকরণ রিসেট করা এবং বরাদ্দ করা পোর্ট মুছে ফেলা সম্ভব কি?
ওয়িন্ডোজে ডিভাইসের COM পোর্ট নম্বর পরিবর্তন করার পদ্ধতি
উইন্ডোজে আপনি ম্যানুয়ালি একটি ডিভাইসের বরাদ্দ করা COM পোর্ট নম্বর পরিবর্তন করতে পারেন। ধরুন প্রয়োজনীয় COM পোর্ট ইতিমধ্যে ব)、**আপনি অন্য একটি পোর্ট মুক্ত করার চেষ্টা করতে চান।
devmgmt.mscকমান্ড চালিয়ে ডিভাইস ম্যানেজার খুলুন;- মেনু থেকে View → Show Hidden Devices নির্বাচন করুন;

- তারপর Ports (COM & LPT) প্রসারিত করে তালিকায় আপনার ডিভাইস খুঁজুন;
- Port Settings ট্যাবে যান এবং Advanced বোতামে ক্লিক করুন;
- ডিভাইসের বর্তমান বরাদ্দ করা COM পোর্ট নম্বর COM Port Number ফিল্ডে দেখতে পাবেন;
- বদলাতে চাইলে ড্রপ-ডাউন তালিকা থেকে আপনার পছন্দের COM পোর্ট নম্বর নির্বাচন করুন।

কিন্তু প্রায়শই হার্ডওয়্যার বৈশিষ্ট্য থেকে বরাদ্দ করা COM পোর্ট নম্বর অন্যেকটিতে পরিবর্তন করা যায় না, কারণ সব "নিম্ন" COM পোর্ট ইতিমধ্যে ব্যবহৃত হচ্ছে। এই ক্ষেত্রে আপনাকে COM পোর্ট সংরক্ষণ সরানোর চেষ্টা করতে হবে।
- Ports (COM & LPT) শাখা প্রসারিত করুন, খুঁজুন আপনার প্রয়োজনীয় COM পোর্ট নম্বর কোন ডিভাইসে বরাদ্দ করা হয়েছে (ফींকা আইকন মানে এই COM পোর্ট সংরক্ষিত আছে কিন্তু ডিভাইসটি বর্তমানে সংযুক্ত নেই);
- রাইট-ক্লিক করে Uninstall নির্বাচন করুন;

- এখন মুক্ত COM পোর্টটি অন্য ডিভাইসের জন্য বরাদ্দ করতে পারেন। আবার আপনার ডিভাইসের প্রপার্টিজ খুলুন, Port Settings → Advanced ট্যাবে যান। ড্রপ-ডাউন তালিকা থেকে মুক্ত COM পোর্ট নির্বাচন করুন।

তবে এই পদ্ধতিটি সব ক্ষেত্রে ব্যস্ত COM পোর্ট মুক্ত করতে পারে না।
পাওয়ারশেল ব্যবহার করে উইন্ডোজে ব্যস্ত COM পোর্টের পূর্ণ তালিকা পেতে পারেন:
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 পোর্ট ব্যবহার করছে তা জানার উপায়
যে ডিভাইসটি উইন্ডোজ বা কোনো চলমান প্রোগ্রাম (প্রসেস) দ্বারা ব্যবহার করা হচ্ছে, তার COM পোর্ট মুক্ত করা সম্ভব নয়। প্রথমে সেই COM পোর্ট ব্যবহার করা প্রসেসটি বন্ধ করতে হবে। প্রসেস এক্সপ্লোরার টুল (সিসইন্টারন্যালস দ্বারা) ব্যবহার করে নির্দিষ্ট COM পোর্ট নম্বর ব্যবহারকারী প্রসেসের নাম জানা যায় (https://docs.microsoft.com/en-gb/sysinternals/downloads/process-explorer)।
প্রথমে COM পোর্ট ব্যবহারকারী সার্ভিসের নাম দেখাতে হবে। পাওয়ারশেল কমান্ড চালান:
get-pnpdevice -class Ports -ea 0| Select Name, PNPDeviceID, Status, Service

Service কলামে নির্দিষ্ট COM পোর্টের সার্ভিস নাম দেখাবে। উদাহরণস্বরূপ, COM2-এর জন্য এটি Serial। এখন অ্যাডমিনিস্ট্রেটর হিসেবে প্রসেস এক্সপ্লোরার চালু করুন এবং মেনু থেকে Find → Find Handle or DLL নির্বাচন করুন। Handle or DLL substring লাইনে আগে পাওয়া Service মান দিন। আমাদের উদাহরণে এটি Serial।
প্রসেস এক্সপ্লোরার আপনার COM পোর্ট ব্যবহারকারী প্রসেসের নাম দেখাবে। COM পোর্ট মুক্ত করতে প্রসেস বা প্রোগ্রামটি বন্ধ (kill) করুন।

উইন্ডোজ রেজিস্ট্রিতে COM পোর্ট নম্বর রিসেট করা
ব্যবহৃত COM পোর্টের তথ্য HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\COM Name Arbiter রেজিস্ট্রি কী-এর অধীনে CommDB রেজিস্ট্রি প্যারামিটারে সংরক্ষিত থাকে।
- রেজিস্ট্রি এডিটর (
regedit.exe) খুলুন এবং উপরে উল্লিখিত রেজিস্ট্রি কী-তে যান;
গুরুত্বপূর্ণ! আমরা दृঢ়ভাবে সুপারিশ করছি এই রেজিস্ট্রি কী-র ব্যাকআপ নিন (File → Export) যেকোনো পরিবর্তনের আগে। সমস্যা হলে মূল COM পোর্ট কনফিগারেশন ফিরিয়ে আনা যাবে।
2. ComDB প্যারামিটারের বাইনারি মান উইন্ডোজে সংরক্ষিত COM পোর্টের তালিকা নির্ধারণ করে। প্রতিটি বিট সংশ্লিষ্ট পোর্টের অবস্থা নির্দেশ করে (১ থেকে ২৫৫)। উদাহরণস্বরূপ, যদি শুধু COM3-এর সংরক্ষণ রাখতে চান, ComDB-এর হেক্স মান হবে 04 (0000 0100);

গুরুত্বপূর্ণ! খুব সাবধান থাকুন, প্যারামিটারে কোনো অতিরিক্ত বিট যোগ করবেন না, অন্যথায় সিস্টেম BSOD-এ পড়তে পারে। 3. সব COM পোর্ট বাইন্ডিং রিসেট করতে হলে ComDB-এর মান ০ করুন;

নোট. উইন্ডোজে সংযুক্ত সমস্ত COM পোর্টের তালিকা HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM রেজিস্ট্রি কী-তে দেখতে পাবেন। SERIALCOMM-এ রেজিস্ট্রি এন্ট্রি শুধু তখন থাকে যখন অন্তর্নিহিত ডিভাইস সংযুক্ত এবং প্রস্তুত থাকে। এই সাবকী HARDWARE কী-এর অংশ এবং প্রতিবার সিস্টেম স্টার্ট হওয়ায় পুনরায় তৈরি হয়।
4. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports রেজিস্ট্রি কী-তে বরাদ্দ করা সব COM পোর্ট নম্বরের তালিকা থাকে। অপ্রয়োজনীয় পোর্ট সংরক্ষণগুলো মুছে ফেলতে পারেন। আমাদের উদাহরণে শুধু COM3 রাখব, বাকিগুলো মুছে দেব;
5. সকল বাহ্যিক ডিভাইস আনপ্লাগ করুন এবং কম্পিউটার রিস্টার্ট করুন;
6. রিবুট হওয়ার পর ডিভাইসগুলো প্রয়োজনীয় ক্রমে সংযুক্ত করুন, USB-টু-সিরিয়াল কনভার্টার পুনরায় ইনস্টল করুন ইত্যাদি। সিস্টেম স্বয়ংক্রিয়ভাবে সমস্ত শনাক্ত COM পোর্ট ডিভাইস শনাক্ত করে সিকোয়েনশিয়াল COM পোর্ট নম্বর বরাদ্দ করবে।
সংরক্ষিত COM পোর্ট পরিষ্কার করার জন্য নিচের ফ্রি টুলগুলোও ব্যবহার করতে পারেন:
- COM Name Arbiter Tool – এই টুল COM পোর্ট সংরক্ষণ রিসেট করতে এবং ব্যবহৃত COM পোর্ট নম্বর খুঁজে বের করতে সাহায্য করে। টুল ডাউনলোড করে অ্যাডমিনিস্ট্রেটর হিসেবে চালান। যে COM পোর্টগুলো মুক্ত করতে চান সেগুলো নির্বাচন করে Clear unused Reservations এবং Remove non-present devices ক্লিক করুন;

- Device Cleanup Tool – এই ইউটিলিটি রেজিস্ট্রি (
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum)-এ পূর্বে সংযুক্ত ডিভাইস খুঁজে বের করে, অপ্রयुक्त ডিভাইস মুছে ফেলে এবং COM পোর্ট সংরক্ষণ পরিষ্কার করে।