היי הבר!
פעם החלטתי לחבר את הפטל שלי לאינטרנט דרך האוויר.
לא מוקדם יותר מאשר נעשה, לצורך כך רכשתי משרוקית usb wi-fi מחברת TP-Link הידועה מהחנות הקרובה. אני אגיד מיד שלא מדובר באיזה מודול ננו-USB, אלא במכשיר די גדול, בערך בגודל של כונן הבזק רגיל (או, אם תרצה, בגודל האצבע המורה של גבר מבוגר). לפני הרכישה ערכתי מחקר קטן על רשימת יצרני המשרוקיות הנתמכים עבור RPI ו-TP-Link היה ברשימה (עם זאת, כפי שהתברר מאוחר יותר, לא לקחתי בחשבון את הדקויות, כי השטן, כידוע , נמצא בפרטים). אז, הסיפור הקר על הרפתקאותיי מתחיל; אנו מציגים לתשומת לבכם סיפור בלשי ב-3 חלקים. למעוניינים, נא לפנות לחתול.
סעיף זה עזר לי חלקית, אבל קודם כל.
תנאי הבעיה
בהתחשב you
- מחשב לוח יחיד Raspberry Pi 2 B v1.1 – 1 חתיכה
- משרוקית usb wi-fi WN727N - 1 חתיכה
- זוג ידיים לא ממש עקומות - 2 חתיכות
- ה-Raspbian העדכני ביותר מותקן כמערכת ההפעלה (מבוסס על Debian 10 Buster)
- גרסת ליבה 4.19.73-v7+
מצא: התחבר לאינטרנט (Wi-Fi מופץ מהנתב הביתי שלך)
לאחר שפרקתי את המתאם, קראתי את ההוראות בפנים:
תאימות מערכת: Windows 10/8/7/XP (אפילו השמיים, אפילו XP) ו-MacOS 10.9-10.13
הממ, כרגיל, אף מילה על לינוקס. זה היה 2k19, ועדיין היה צורך להרכיב את הדרייברים באופן ידני...
היו איתנו 2 מהדרים, 75 אלף ספריות, חמישה כתמים בינאריים, חצי מערך של נשים עירומות עם לוגו וים שלם של כותרות של כל השפות והסימונים. לא שמדובר בסט הכרחי לתפקיד. אבל ברגע שאתה מתחיל להרכיב לעצמך מערכת, זה הופך להיות קשה לעצור. הדבר היחיד שגרם לי לדאגה היה הדרייברים ל-wi-fi. אין דבר חסר אונים, חסר אחריות ומושחת יותר מבניית נהגים ממקור. אבל ידעתי שבמוקדם או במאוחר נעבור לזבל הזה.
באופן כללי, כפי שאתה יודע, התעסקות ב- usb wi-fi בלינוקס היא כואב וקצת חסר טעם (כמו סושי רוסי).
המארז מכיל גם תקליטור עם דרייברים. בלי הרבה תקווה אני מסתכל על מה שיש בו - הם בהחלט לא טיפלו בזה. חיפוש באינטרנט הביא אותי לאתר היצרן, אבל יש שם מנהל התקן לינוקס רק לתיקון המכשיר v4, ובזרועותי היה v5.21. וחוץ מזה, עבור גרסאות ליבה ישנות מאוד 2.6-3.16. מיואש מהכישלון ממש בהתחלה, כבר חשבתי שהייתי צריך לקחת את ה-TL-WN727N (הוא קצת יותר יקר ויכול להתמודד עם 300Mbps לעומת 150 עבור שלי, אבל כפי שהתברר, זה לא משנה בכלל עבור הפטל, על זה נכתוב בהמשך). אבל הדבר החשוב ביותר הוא שדרייברים עבורו כבר קיימים והם פשוט מותקנים כחבילה קושחה-ralink. בדרך כלל תוכל לצפות בגרסה של המכשיר בגוף המכשיר על גבי מדבקה לצד המספר הסידורי.
המשך הגוגל והביקור בפורומים שונים לא הביאו הרבה טוב. כנראה שאף אחד לפניי לא ניסה לחבר מתאם כזה ללינוקס. הממ, יש לי מזל כמו אדם שטבע.
אמנם, לא, אני משקר, גם הביקור בפורומים (בעיקר בשפה האנגלית) נשא פרי; בנושאים מסוימים היה אזכור של מר לופינגר מסוים, שמפורסם בכתיבת מספר דרייברים למתאמי Wi-Fi . מאגר ה-git שלו נמצא בסוף המאמר בקישורים. והלקח השני שלמדתי הוא שאתה צריך לזהות את המכשיר שלך כדי להבין איזה דרייבר עשוי להתאים לו.
חלק 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.
בוא נלך רחוק יותר ונסתכל 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
המערכת לא יודעת באיזה סוג של מכשיר מדובר, ומציגה בבושה מקום ריק במקום השם (למרות שספק=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: עליונות בורן
אני מוריד את מקורות הדרייבר מ-Git.
זה הזמן להתקין מחדש את Windows ולעשות מה שמשתמשי לינוקס משויכים אליו בדרך כלל - להרכיב משהו מסוגים מסוימים. הרכבת מנהלי התקנים, כפי שמתברר, שונה מעט מהידור של תוכניות:
make
sudo make install
אבל כדי להדר מודולי ליבה אנחנו צריכים את קבצי כותרות הקרנל עבור הגרסה הספציפית שלנו.
יש חבילה במאגר המלאי כותרות raspberrypi-kernel, אבל הוא מכיל את גרסת הליבה של הקבצים 4.19.66-v7l+, וזה לא מתאים לנו. אבל כדי לקבל את הכותרות של הגרסה הנדרשת, כפי שהתברר, יש כלי נוח מקור rpi (קישור בסוף ב-Github), בעזרתו תוכלו להוריד את הכותרות הנחוצות. אנו משכפלים את המאגר, הופכים את הסקריפט לניתן להרצה ומפעילים אותו. ההשקה הראשונה נכשלת עם שגיאה - אין כלי עזר bc. למרבה המזל, הוא נמצא במאגר ואנחנו פשוט מתקינים אותו.
sudo apt-get install bc
אחרי זה, הפעלה מחדש והורדה של הכותרות (ואז הגדרת משהו, אני לא זוכר עכשיו) לוקח קצת זמן ואתה יכול לשבת בכיסא שלך, Windows הפך טוב יותר בכל הביטויים שלו.
לאחר הורדת כל הכותרות, בדוק שהספרייה מופיעה /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
שלב ההכנה הסתיים, אתה יכול להתחיל בהרכבה. הרכבת המודולים שוב לוקחת קצת זמן, ה-Raspberry אינו חיה מהירה (יש לו 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), כל המכשירים (כולל מתאם ה-Ethernet) יושבים על אותו אוטובוס USB. נהדר, נכון? ולכן רוחב הפס של אוטובוס ה-USB מחולק בין כל המכשירים שבו. כאשר מודדים את המהירות הן דרך ethernet והן דרך usb wi-fi (מחובר לנתב 1) הן באוויר והן באמצעות חוט, היא הייתה סביב 20Mbit/s.
נ.ב. באופן כללי, מדריך זה להרכבת מנהל התקן עבור המתאם המסוים הזה תקף לא רק עבור RPI. לאחר מכן חזרתי על זה בשולחן העבודה שלי עם Linux Mint - הכל עבד גם שם. אתה רק צריך להוריד את קבצי הכותרת הדרושים עבור גרסת הליבה שלך באותו אופן.
UPD. אנשים בעלי ידע הציעו: כדי לא להיות תלוי בגרסת הליבה, עליך לאסוף ולהתקין מנהלי התקנים באמצעות dkms. ה-readme עבור מנהל ההתקן מכיל גם את האפשרות הזו.
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.
תזכור
-
-
-
-
מקור: www.habr.com
