آئیے TP-Link TL-WN727N کے ساتھ RaspberryPi کو دوست بنائیں

ارے حبر!

میں نے ایک بار اپنے رسبری کو ہوا کے ذریعے انٹرنیٹ سے جوڑنے کا فیصلہ کیا۔

اس مقصد کے لیے میں نے قریب ترین اسٹور سے معروف کمپنی TP-Link سے USB وائی فائی سیٹی خریدی۔ میں فوراً ہی کہوں گا کہ یہ کسی قسم کا نینو USB ماڈیول نہیں ہے، بلکہ کافی بڑا ڈیوائس ہے، جو کہ ایک باقاعدہ فلیش ڈرائیو کے سائز (یا، اگر آپ چاہیں تو، بالغ آدمی کی شہادت کی انگلی کے سائز) کے برابر ہے۔ خریدنے سے پہلے، میں نے RPI کے لیے معاون سیٹی بنانے والوں کی فہرست پر تھوڑی تحقیق کی اور TP-Link اس فہرست میں شامل تھا (تاہم، جیسا کہ بعد میں پتہ چلا، میں نے باریکیوں کو مدنظر نہیں رکھا، کیونکہ شیطان، جیسا کہ ہم جانتے ہیں۔ ، تفصیلات میں ہے)۔ تو، میری غلط مہم جوئی کی سرد کہانی شروع ہوتی ہے؛ ہم آپ کی توجہ کے لیے 3 حصوں میں ایک جاسوسی کہانی پیش کرتے ہیں۔ دلچسپی رکھنے والوں کے لیے بلی سے رجوع کریں۔

آرٹیکل WN727N وائی فائی اڈاپٹر کو Ubuntu/Mint سے جوڑنا اس نے میری جزوی طور پر مدد کی، لیکن سب سے پہلے چیزیں۔

مسئلہ کی شرائط

دیئے گئے:

  1. سنگل بورڈ کمپیوٹر Raspberry Pi 2 B v1.1 – 1 ٹکڑا
  2. USB وائی فائی سیٹی WN727N - 1 ٹکڑا
  3. ٹیڑھے ہاتھوں کا ایک جوڑا - 2 ٹکڑے
  4. تازہ ترین Raspbian OS کے طور پر انسٹال ہے (Debian 10 Buster پر مبنی)
  5. کرنل ورژن 4.19.73-v7+

تلاش کریں: انٹرنیٹ سے جڑیں (وائی فائی آپ کے گھر کے روٹر سے تقسیم کیا جاتا ہے)

اڈاپٹر کو کھولنے کے بعد، میں نے اندر کی ہدایات کو پڑھا:

سسٹم کی مطابقت: ونڈوز 10/8/7/XP (یہاں تک کہ آسمان، یہاں تک کہ XP) اور MacOS 10.9-10.13

ہمم، ہمیشہ کی طرح، لینکس کے بارے میں ایک لفظ بھی نہیں۔ یہ 2k19 تھا، اور ڈرائیوروں کو ابھی بھی دستی طور پر جمع کرنے کی ضرورت ہے...

ہمارے پاس 2 مرتب کرنے والے، 75 ہزار لائبریریاں، پانچ بائنری بلاب، لوگو والی ننگی خواتین کی آدھی صف اور تمام زبانوں اور مارک اپ کے ہیڈروں کا ایک پورا سمندر تھا۔ ایسا نہیں ہے کہ یہ کام کے لیے ضروری سیٹ ہے۔ لیکن ایک بار جب آپ اپنے لیے ایک نظام کو جمع کرنا شروع کر دیں تو اسے روکنا مشکل ہو جاتا ہے۔ صرف ایک ہی چیز جس کی وجہ سے مجھے پریشانی ہوئی وہ وائی فائی کے ڈرائیور تھے۔ ذرائع سے ڈرائیور بنانے سے زیادہ بے بس، غیر ذمہ دارانہ اور بدعنوان کوئی چیز نہیں ہے۔ لیکن میں جانتا تھا کہ جلد یا بدیر ہم اس کوڑے دان میں تبدیل ہو جائیں گے۔

عام طور پر، جیسا کہ آپ جانتے ہیں، لینکس پر یو ایس بی وائی فائی کا استعمال کرنا ہے۔ تکلیف دہ اور کچھ بے ذائقہ (روسی سشی کی طرح)۔

باکس میں ڈرائیوروں کے ساتھ ایک سی ڈی بھی ہے۔ زیادہ امید کے بغیر میں دیکھتا ہوں کہ اس میں کیا ہے - انہوں نے یقینی طور پر اس کا خیال نہیں رکھا ہے۔ انٹرنیٹ کی تلاش مجھے مینوفیکچرر کی ویب سائٹ پر لے آئی، لیکن وہاں صرف ڈیوائس پر نظرثانی کے لیے لینکس ڈرائیور موجود ہے۔ v4، اور میری باہوں میں تھا v5.21. اور اس کے علاوہ، بہت پرانے کرنل ورژن 2.6-3.16 کے لیے۔ بالکل شروع میں ناکامی سے حوصلہ شکنی، میں نے پہلے ہی سوچا تھا کہ مجھے TL-WN727N لینا چاہیے تھا (یہ تھوڑا زیادہ مہنگا ہے اور میرے لیے 300Mbps بمقابلہ 150 ہینڈل کر سکتا ہے، لیکن جیسا کہ یہ نکلا، اس سے کوئی فرق نہیں پڑتا۔ رسبری کے لیے، اس کے بارے میں بعد میں لکھا جائے گا)۔ لیکن سب سے اہم بات یہ ہے کہ اس کے ڈرائیور پہلے سے موجود ہیں اور صرف ایک پیکیج کے طور پر انسٹال ہیں۔ firmware-ralink. آپ عام طور پر ڈیوائس کی نظرثانی کو ڈیوائس کے باڈی پر سیریل نمبر کے ساتھ والے اسٹیکر پر دیکھ سکتے ہیں۔

مزید گوگلنگ اور مختلف فورمز پر جانے سے زیادہ فائدہ نہیں ہوا۔ بظاہر مجھ سے پہلے کسی نے بھی ایسے اڈاپٹر کو لینکس سے جوڑنے کی کوشش نہیں کی۔ ہمم، میں ڈوبنے والے آدمی کی طرح خوش قسمت ہوں۔

اگرچہ، نہیں، میں جھوٹ بول رہا ہوں، فورمز (زیادہ تر انگریزی زبان والے) کا دورہ بھی نتیجہ خیز ہے؛ کچھ عنوانات میں ایک خاص مسٹر لو فنگر کا ذکر تھا، جو وائی فائی اڈاپٹر کے لیے متعدد ڈرائیور لکھنے کے لیے مشہور ہیں۔ . اس کا گٹ ذخیرہ لنکس میں مضمون کے آخر میں ہے۔ اور دوسرا سبق جو میں نے سیکھا وہ یہ ہے کہ آپ کو یہ سمجھنے کے لیے اپنے آلے کی شناخت کرنی ہوگی کہ کون سا ڈرائیور اس کے لیے موزوں ہو سکتا ہے۔

حصہ 1: بورن شناخت

جب ڈیوائس کو پورٹ میں پلگ ان کیا گیا تو یقیناً کوئی ایل ای ڈی نہیں جلی۔ اور عام طور پر یہ کسی بھی طرح سے واضح نہیں ہے کہ آیا کچھ کام کرتا ہے یا نہیں۔

سب سے پہلے، یہ جاننے کے لیے کہ آیا دانا ہمارے آلے کو دیکھتا ہے، میں dmesg میں دیکھتا ہوں:

[  965.606998] usb 1-1.3: new high-speed USB device number 9 using dwc_otg
[  965.738195] usb 1-1.3: New USB device found, idVendor=2357, idProduct=0111, bcdDevice= 0.00
[  965.738219] usb 1-1.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[  965.738231] usb 1-1.3: Product: 802.11n NIC
[  965.738243] usb 1-1.3: Manufacturer: Realtek
[  965.738255] usb 1-1.3: SerialNumber: 00E04C0001

یہ پتہ چلا کہ یہ دیکھتا ہے، اور یہ بھی واضح ہے کہ USB بس میں ایک Realtek چپ اور آلہ کا VID/PID موجود ہے۔

آئیے مزید آگے بڑھ کر دیکھتے ہیں۔ lsusb، اور یہاں ایک اور ناکامی ہمارا انتظار کر رہی ہے۔

Bus 001 Device 008: ID 2357:0111 
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

سسٹم کو معلوم نہیں ہے کہ یہ کس قسم کا آلہ ہے، اور نام کی بجائے شرم سے خالی جگہ دکھاتا ہے (حالانکہ vendor=2357 یقینی طور پر TP-Link ہے)۔

اس مرحلے پر، متجسس قاری نے شاید پہلے ہی کچھ دلچسپ محسوس کیا ہے، لیکن ہم اسے اپنے وقت تک چھوڑ دیں گے.

خالی ناموں کے مسئلے کی تحقیق نے مجھے شناخت کنندگان والی سائٹ پر پہنچایا، جہاں معلوم VID/PID کے بارے میں معلومات درج کی گئی ہیں۔ ہمارا 2357:0111 وہاں نہیں تھا۔ جیسا کہ یہ بعد میں باہر کر دیا، افادیت lsusb فائل کا استعمال کرتا ہے۔ /usr/share/misc/usb.idsجو کہ اس سائٹ سے آئی ڈیز کی وہی فہرست ہے۔ ڈسپلے کی خوبصورتی کے لیے، میں نے اپنے سسٹم میں وینڈر TP-Link کے لیے صرف لائنیں شامل کیں۔

2357  TP-Link
        0111  TL-WN727N v5.21

ٹھیک ہے، ہم نے آلات کی فہرست میں ڈسپلے کو درست کر دیا، لیکن یہ ہمیں ڈرائیور کے انتخاب کے لیے ایک قدم کے قریب نہیں لایا۔ ڈرائیور کو منتخب کرنے کے لیے، آپ کو یہ جاننا ہوگا کہ آپ کی سیٹی کس چپ پر بنی ہے۔ انٹرنیٹ پر اس کا پتہ لگانے کی اگلی ناکام کوششوں نے کچھ اچھا نہیں کیا۔ ایک پتلی کٹے ہوئے سکریو ڈرایور سے لیس ہو کر، میں نے احتیاط سے اڈاپٹر کی ٹوپی اتار دی اور انکل لیاو کا شیطانی دماغ اپنی تمام قدیم برہنگی میں ظاہر ہوتا ہے۔ ایک میگنفائنگ گلاس کے نیچے آپ چپ کا نام دیکھ سکتے ہیں۔ RTL8188EUS. یہ پہلے ہی اچھا ہے۔ کچھ فورمز پر میں نے پوسٹس دیکھی ہیں کہ اسی جنٹلمین lwfinger کا ڈرائیور اس چپ کے لیے موزوں ہے (حالانکہ وہ صرف RTL8188EU کے بارے میں لکھتا ہے)۔

حصہ 2: بورن بالادستی

میں گٹ سے ڈرائیور کے ذرائع ڈاؤن لوڈ کرتا ہوں۔

یہ ونڈوز کو دوبارہ انسٹال کرنے اور وہ کام کرنے کا وقت ہے جس سے عام طور پر لینکس کے صارفین وابستہ ہوتے ہیں - کسی قسم سے کچھ جمع کرنا۔ ڈرائیوروں کو جمع کرنا، جیسا کہ یہ پتہ چلتا ہے، پروگراموں کو مرتب کرنے سے تھوڑا مختلف ہے:

make
sudo make install

لیکن کرنل ماڈیولز کو مرتب کرنے کے لیے ہمیں اپنے مخصوص ورژن کے لیے کرنل ہیڈر فائلز کی ضرورت ہے۔

اسٹاک ریپوزٹری میں ایک پیکج ہے۔ raspberrypi-kernel-headers، لیکن اس میں فائلوں کا کرنل ورژن ہے۔ 4.19.66-v7l+، اور یہ ہمیں مناسب نہیں ہے۔ لیکن مطلوبہ ورژن کے ہیڈر حاصل کرنے کے لیے، جیسا کہ یہ نکلا، ایک آسان ٹول ہے۔ آر پی آئی ذریعہ (گیتھب پر آخر میں لنک)، جس کے ساتھ آپ ضروری ہیڈر ڈاؤن لوڈ کر سکتے ہیں۔ ہم ذخیرہ کو کلون کرتے ہیں، اسکرپٹ کو قابل عمل بناتے ہیں، اور اسے چلاتے ہیں۔ پہلی لانچ غلطی کے ساتھ ناکام ہو جاتی ہے - کوئی افادیت نہیں ہے۔ bc. خوش قسمتی سے، یہ مخزن میں ہے اور ہم اسے صرف انسٹال کرتے ہیں۔

sudo apt-get install bc

اس کے بعد، ہیڈرز کو دوبارہ شروع کرنے اور ڈاؤن لوڈ کرنے میں (اور پھر کچھ ترتیب دینے میں، مجھے ابھی یاد نہیں ہے) کچھ وقت لگتا ہے اور آپ اپنی کرسی پر بیٹھ سکتے ہیں، ونڈوز اپنے تمام مظاہر میں بہتر ہو گیا ہے۔

تمام ہیڈر ڈاؤن لوڈ ہونے کے بعد، چیک کریں کہ ڈائریکٹری ظاہر ہوتی ہے۔ /lib/modules/4.19.73-v7+ اور اس میں سملنک اس جگہ کی طرف اشارہ کرتا ہے جہاں ڈاؤن لوڈ کی گئی فائلیں واقع ہیں (میرے لیے یہ /home/pi/linux ہے):

pi@raspberrypi:/home/pi/rtl8188eu# ls -l /lib/modules/4.19.73-v7+/
lrwxrwxrwx  1 root root     14 Sep 24 22:44 build -> /home/pi/linux

تیاری کا مرحلہ مکمل ہو چکا ہے، آپ اسمبلی شروع کر سکتے ہیں۔ ماڈیولز کو دوبارہ جمع کرنے میں کچھ وقت لگتا ہے، راسبیری کوئی تیز جانور نہیں ہے (اس میں 32bit 900Mhz Cortex ARM v7 ہے)۔
تو سب کچھ مرتب ہوا۔ ہم ڈرائیور کو دوسرے مرحلے میں انسٹال کرتے ہیں (انسٹال کریں)، جبکہ ڈرائیور کے کام کرنے کے لیے ضروری مزید فرم ویئر فائلوں کو بھی کاپی کرتے ہیں:

install:
        install -p -m 644 8188eu.ko  $(MODDESTDIR)
        @if [ -a /lib/modules/$(KVER)/kernel/drivers/staging/rtl8188eu/r8188eu.ko ] ; then modprobe -r r8188eu; fi;
        @echo "blacklist r8188eu" > /etc/modprobe.d/50-8188eu.conf
        cp rtl8188eufw.bin /lib/firmware/.
        /sbin/depmod -a ${KVER}
        mkdir -p /lib/firmware/rtlwifi
        cp rtl8188eufw.bin /lib/firmware/rtlwifi/.

حصہ 3. دی بورن الٹی میٹم

میں پورٹ میں سیٹی لگاتا ہوں اور... کچھ نہیں ہوتا۔ کیا یہ سب بے کار تھا؟

میں پروجیکٹ کے اندر فائلوں کا مطالعہ کرنا شروع کرتا ہوں اور ان میں سے ایک میں مجھے معلوم ہوتا ہے کہ مسئلہ کیا تھا: ڈرائیور VID/PID شناخت کنندگان کی ایک مکمل فہرست بتاتا ہے جسے وہ پیش کر سکتا ہے۔ اور اس ڈرائیور کے ساتھ ہمارے آلے کے کام کرنے کے لیے، میں نے بس فائل میں اپنی آئی ڈی شامل کی۔ rtl8188eu/os_dep/usb_intf.c

static struct usb_device_id rtw_usb_id_tbl[] = {
        /*=== Realtek demoboard ===*/
        {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8179)}, /* 8188EUS */
        {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x0179)}, /* 8188ETV */
        /*=== Customer ID ===*/
        /****** 8188EUS ********/
        {USB_DEVICE(0x07B8, 0x8179)}, /* Abocom - Abocom */
        {USB_DEVICE(0x0DF6, 0x0076)}, /* Sitecom N150 v2 */
        {USB_DEVICE(0x2001, 0x330F)}, /* DLink DWA-125 REV D1 */
        {USB_DEVICE(0x2001, 0x3310)}, /* Dlink DWA-123 REV D1 */
        {USB_DEVICE(0x2001, 0x3311)}, /* DLink GO-USB-N150 REV B1 */
        {USB_DEVICE(0x2001, 0x331B)}, /* D-Link DWA-121 rev B1 */
        {USB_DEVICE(0x056E, 0x4008)}, /* Elecom WDC-150SU2M */
        {USB_DEVICE(0x2357, 0x010c)}, /* TP-Link TL-WN722N v2 */
        {USB_DEVICE(0x2357, 0x0111)}, /* TP-Link TL-WN727N v5.21 */
        {}      /* Terminating entry */
};

میں نے ڈرائیور کو دوبارہ مرتب کیا اور اسے سسٹم پر دوبارہ انسٹال کیا۔

اور اس بار سب کچھ شروع ہوا۔ اڈاپٹر پر روشنی روشن ہوئی اور نیٹ ورک انٹرفیس کی فہرست میں ایک نیا آلہ نمودار ہوا۔

وائرلیس انٹرفیس دیکھنا درج ذیل کو ظاہر کرتا ہے:

pi@raspberrypi:/home/pi/rtl8188eu# iwconfig
eth0      no wireless extensions.

lo        no wireless extensions.

wlan0     unassociated  ESSID:""  Nickname:"<WIFI@REALTEK>"
          Mode:Auto  Frequency=2.412 GHz  Access Point: Not-Associated   
          Sensitivity:0/0  
          Retry:off   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality=0/100  Signal level=0 dBm  Noise level=0 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

آخر تک پڑھنے والوں کے لیے بونس

یاد رکھیں میں نے کیسے کہا کہ اس سے کوئی فرق نہیں پڑتا کہ آپ کے اڈاپٹر پر زیادہ سے زیادہ رفتار کتنی بتائی گئی ہے؟
لہذا، مالینکا پر (ماڈل 4 کی ریلیز سے پہلے)، تمام آلات (بشمول ایتھرنیٹ اڈاپٹر) ایک ہی USB بس پر بیٹھتے ہیں۔ بہت اچھا، ٹھیک ہے؟ اور اس لیے USB بس کی بینڈوتھ اس پر موجود تمام آلات کے درمیان تقسیم ہوتی ہے۔ ایتھرنیٹ کے ذریعے اور USB وائی فائی (1 روٹر سے منسلک) کے ذریعے ہوا اور تار دونوں کے ذریعے رفتار کی پیمائش کرتے وقت، یہ تقریباً 20Mbit/s تھی۔

PS عام طور پر، اس مخصوص اڈاپٹر کے لیے ڈرائیور کو مرتب کرنے کے لیے یہ گائیڈ نہ صرف RPI کے لیے درست ہے۔ پھر میں نے اسے اپنے ڈیسک ٹاپ پر لینکس منٹ کے ساتھ دہرایا - وہاں بھی سب کچھ کام کرتا تھا۔ آپ کو اپنے کرنل ورژن کے لیے ضروری ہیڈر فائلوں کو اسی طرح ڈاؤن لوڈ کرنے کی ضرورت ہے۔

یو پی ڈی باشعور لوگوں نے مشورہ دیا: کرنل ورژن پر انحصار نہ کرنے کے لیے، آپ کو dkms کا استعمال کرتے ہوئے ڈرائیورز کو جمع اور انسٹال کرنے کی ضرورت ہے۔ ڈرائیور کے ریڈمی میں بھی یہ آپشن ہوتا ہے۔

pi@raspberrypi:/home/pi# sudo dkms add ./rtl8188eu
pi@raspberrypi:/home/pi# sudo dkms build 8188eu/1.0
pi@raspberrypi:/home/pi# sudo dkms install 8188eu/1.0

UPD2۔ مجوزہ پیچ ڈیوائس آئی ڈی کے لیے lwfinger/rtl8188eu ریپوزٹری کی مرکزی دھارے کی شاخ میں قبول کیا گیا تھا۔

حوالہ جات
- RPi USB Wi-Fi اڈاپٹر
- Gitbub lwfinger/rtl8188eu
- usb.ids
- آر پی آئی ذریعہ

ماخذ: www.habr.com