اچو ته دوست ٺاهيو RaspberryPi سان TP-Link TL-WN727N

اي حبر!

مون هڪ دفعو فيصلو ڪيو ته منهنجي راسبي کي انٽرنيٽ تي هوا سان ڳنڍڻ.

ان مقصد لاءِ مون ويجھي دڪان تان مشهور ڪمپني TP-Link جي يو ايس بي وائي فائي سيٽ خريد ڪئي. مان فوري طور تي چوندس ته هي ڪنهن قسم جو نانو يو ايس بي ماڊل نه آهي، پر ڪافي وڏي ڊيوائس آهي، هڪ باقاعده فليش ڊرائيو جي سائيز جي باري ۾ (يا، جيڪڏهن توهان چاهيو ته، بالغ انسان جي آڱر جي ماپ). خريد ڪرڻ کان اڳ، مون RPI ۽ TP-Link لاءِ سپورٽ ٿيل ويسٽل ٺاهيندڙن جي لسٽ تي ٿوري تحقيق ڪئي (جڏهن ته، جيئن بعد ۾ اهو نڪتو، مون ذيلي ذخيري کي نظر ۾ نه رکيو، ڇاڪاڻ ته شيطان، جيئن اسان ڄاڻون ٿا. ، تفصيل ۾ آهي). تنهن ڪري، منهنجي بدانتظامي جي سرد ​​ڪهاڻي شروع ٿئي ٿي؛ اسان توهان جي ڌيان لاء هڪ جاسوسي ڪهاڻي پيش ڪريون ٿا 3 حصن ۾. دلچسپي وارن لاء، مهرباني ڪري ڏسو cat.

مضمون WN727N وائي فائي اڊاپٽر کي Ubuntu/Mint سان ڳنڍڻ اهو مون کي جزوي طور تي مدد ڪئي، پر پهرين شيون پهرين.

مسئلي جون حالتون

ڏنو ويو:

  1. سنگل بورڊ ڪمپيوٽر Raspberry Pi 2 B v1.1 - 1 ٽڪرو
  2. يو ايس بي وائي فائي ويسٽل WN727N - 1 ٽڪرو
  3. ڪافي نه ميڙ هٿن جو هڪ جوڙو - 2 ٽڪر
  4. جديد Raspbian OS جي طور تي نصب ڪيو ويو آهي (بنياد تي Debian 10 Buster)
  5. ڪرنل ورزن 4.19.73-v7+

ڳولهيو: انٽرنيٽ سان ڳنڍيو (وائي فائي توهان جي گهر جي روٽر مان ورهايل آهي)

اڊاپٽر کي پيڪ ڪرڻ کان پوء، مون اندر اندر هدايتون پڙهيو:

سسٽم مطابقت: Windows 10/8/7/XP (جيتوڻيڪ آسمان، حتي XP) ۽ MacOS 10.9-10.13

ها، هميشه وانگر، لينڪس بابت هڪ لفظ ناهي. اهو 2k19 هو، ۽ ڊرائيور اڃا تائين دستي طور تي گڏ ٿيڻ جي ضرورت آهي ...

اسان وٽ 2 مرتب ڪندڙ، 75 هزار لئبرريون، پنج بائنري بلب، ننگي عورتن جي اڌ صف ۾ لوگو ۽ سڀني ٻولين جي هيڊرن ۽ مارڪ اپن جو پورو سمنڊ هو. نه ته اهو ڪم لاءِ ضروري سيٽ آهي. پر هڪ دفعو توهان پنهنجي لاءِ هڪ نظام گڏ ڪرڻ شروع ڪيو، اهو روڪڻ ڏکيو ٿي ويندو. صرف هڪ شيء جيڪا مون کي پريشان ڪيو هو وائي فائي لاء ڊرائيور. ذريعن کان ڊرائيورن جي تعمير کان وڌيڪ لاچار، غير ذميوار ۽ بدعنوان ٻيو ڪجهه به ناهي. پر مون کي خبر هئي ته جلد يا بعد ۾ اسان هن گندگي کي تبديل ڪنداسين.

عام طور تي، جيئن توهان ڄاڻو ٿا، لينڪس تي USB وائي فائي سان ڀريل آهي دردناڪ ۽ ڪجهه بي ذائقو (روسي سشي وانگر).

باڪس ۾ ڊرائيور سان گڏ هڪ سي ڊي پڻ شامل آهي. گهڻي اميد کان سواءِ مان ڏسان ٿو ته ان تي ڇا آهي - انهن ضرور ان جو خيال نه رکيو آهي. هڪ انٽرنيٽ ڳولا مون کي ٺاهيندڙ جي ويب سائيٽ تي آندو، پر اتي هڪ لينڪس ڊرائيور آهي صرف ڊوائيس جي نظرثاني لاءِ v4، ۽ منهنجي هٿن ۾ هو v5.21. ۽ ان کان علاوه، تمام پراڻن ڪنيل ورزن لاءِ 2.6-3.16. شروعات ۾ ناڪامي کان مايوس ٿي، مون اڳ ۾ ئي سوچيو ته مون کي TL-WN727N وٺڻ گهرجي (اهو ٿورو وڌيڪ مهانگو آهي ۽ منهنجي لاءِ 300Mbps بمقابله 150 سنڀالي سگهي ٿو، پر جيئن اهو نڪتو، اهو سڀ ڪجهه فرق نٿو ڪري. راسبي لاء، ان بابت بعد ۾ لکيو ويندو). پر سڀ کان اهم شيء اها آهي ته ان لاء ڊرائيور اڳ ۾ ئي موجود آهن ۽ صرف هڪ پيڪيج جي طور تي نصب ٿيل آهن firmware-ralink. توھان عام طور تي ڊوائيس جي نظرثاني ڏسي سگھو ٿا ڊوائيس جي جسم تي ھڪڙي اسٽيڪر تي سيريل نمبر جي اڳيان.

وڌيڪ گوگلنگ ۽ مختلف فورمن جو دورو ڪرڻ گهڻو سٺو نه آيو. ظاهر آهي ته مون کان اڳ ڪنهن به اهڙي اڊاپٽر کي لينڪس سان ڳنڍڻ جي ڪوشش نه ڪئي آهي. هونءَ، مان خوش قسمت آهيان جيئن ٻڏي ويل انسان.

جيتوڻيڪ، نه، مان ڪوڙ ڳالهائي رهيو آهيان، فورمن جو دورو ڪرڻ (اڪثر ڪري انگريزي ٻولي وارا) پڻ ڦري ويا؛ ڪجهه عنوانن ۾ هڪ خاص مسٽر لوفنگر جو ذڪر آهي، جيڪو وائي فائي ايڊاپٽرز لاء ڪيترن ئي ڊرائيور لکڻ لاء مشهور آهي. . هن جي گٽ مخزن لنڪس ۾ آرٽيڪل جي آخر ۾ آهي. ۽ ٻيو سبق جيڪو مون سکيو اهو آهي ته توهان کي پنهنجي ڊوائيس کي سڃاڻڻ جي ضرورت آهي انهي کي سمجهڻ لاءِ ته ڪهڙو ڊرائيور ان لاءِ موزون ٿي سگهي ٿو.

حصو 1: بورن جي سڃاڻپ

جڏهن ڊوائيس بندرگاهن ۾ پلگ ان ڪئي وئي، يقينا، ڪو به LED روشن نه ٿيو. ۽ عام طور تي اهو واضح ناهي ته ڇا ڪجهه ڪم ڪري ٿو يا نه.

سڀ کان پهريان، اهو معلوم ڪرڻ لاء ته ڇا ڪنييل اسان جي ڊوائيس کي ڏسي ٿو، مان 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

اهو ظاهر ٿيو ته اهو ڏسي ٿو، ۽ اهو پڻ واضح آهي ته اتي هڪ Realtek چپ آهي ۽ ڊوائيس جو VID / PID خود USB بس تي آهي.

اچو ته اڳتي وڃو ۽ ڏسو بي ايس ايس، ۽ هتي هڪ ٻي ناڪامي اسان جي انتظار ۾ آهي

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 اتي نه هو. جيئن بعد ۾ ظاهر ٿيو، افاديت بي ايس ايس فائل استعمال ڪري ٿو /usr/share/misc/usb.ids, جيڪا هن سائيٽ مان 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+، ۽ اهو اسان کي مناسب ناهي. پر گهربل ورزن جي سرن کي حاصل ڪرڻ لاء، جيئن اهو نڪتو، اتي هڪ آسان اوزار آهي rpi-ذريعو (گٿب تي آخر ۾ لنڪ)، جنهن سان توهان ضروري هيڊر ڊائون لوڊ ڪري سگهو ٿا. اسان مخزن کي کلون ڪيو، اسڪرپٽ کي قابل عمل بڻائي، ۽ ان کي هلائيندا آهيون. پهرين لانچ هڪ غلطي سان ناڪام ٿي - ڪا به افاديت ناهي bc. خوش قسمت، اهو مخزن ۾ آهي ۽ اسان صرف ان کي انسٽال ڪيو.

sudo apt-get install bc

ان کان پوء، هيڊرز کي ٻيهر شروع ڪرڻ ۽ ڊائون لوڊ ڪرڻ (۽ پوء ڪجهه ترتيب ڏيڻ، مون کي هاڻي ياد ناهي) ڪجهه وقت وٺندو آهي ۽ توهان پنهنجي ڪرسي تي واپس ويهندا آهيو، ونڊوز پنهنجي سڀني ظاهرن ۾ بهتر ٿي چڪي آهي.

سڀني سرن کي ڊائون لوڊ ڪرڻ کان پوء، چيڪ ڪريو ته ڊاريڪٽري ظاهر ٿئي ٿي /lib/modules/4.19.73-v7+ ۽ ان ۾ symlink ان هنڌ ڏانهن اشارو ڪري ٿو جتي ڊائون لوڊ ڪيل فائلون موجود آهن (منهنجي لاءِ اهو آهي /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

انهن لاءِ بونس جيڪي آخر تائين پڙهن ٿا

ياد رکو ته مون ڪيئن چيو ته اهو مسئلو ناهي ته توهان جي اڊاپٽر تي وڌ ۾ وڌ رفتار ڪهڙي بيان ڪئي وئي آهي؟
تنهن ڪري، Malinka تي (ماڊل 4 جي ڇڏڻ کان اڳ)، سڀئي ڊوائيس (بشمول ايٿرنيٽ اڊاپٽر) ساڳئي يو ايس بي بس تي ويهندا آهن. عظيم، صحيح؟ ۽ تنهن ڪري 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 وائي فائي اڊاپٽر
- Gitbub lwfinger/rtl8188eu
- usb.ids
- rpi-ذريعو

جو ذريعو: www.habr.com