התמזל מזלי לקבל לידי ציוד חדש לגלישה באינטרנט.
הציוד ממותג עבור חברת Provision ISR , והוא מודם/ראוטר LTE.
דגם המכשיר שברשותי הוא PR-LTE01w.
כאשר מחברים את המכשיר ללינוקס, הוא מדווח שהוא של של מרוול (Marvell) ולא של Provision-ISR.
שמחתי מאוד לקבל לידי ציוד שמעולם לא עבדתי איתו ,זה לא קורה הרבה שאתה מקבל ציוד מחברה שמעולם לא עבדת איתה (רק מאוחר יותר גיליתי שזה של מרוול),
הפתעתי הראשונה הייתה שלא ראיתי את קרנל לינוקס ברשימה של המערכות הנתמכות, אבל כן ראיתי את WindowsXP מה שאומר שכנראה יש תמיכה ארוכה מאוד לאחור. זה מפתיע שיש עדיין חברות שלא מכירות בצורך לפרסם שהם תומכים בלינוקס או ב OpenWRT אבל כן תומכים ב WindowsXP.
העיצוב :
העיצוב המכני של המודם נועד כנראה לאנשים עם אצבעות קטנות משלי, הייתי צריך להשתמש בפינצטה בשביל לשלוף את כרטיס הסים כארד מהתושבות שלו. אם יש לכם כף יד גדולה צריך פינצטה בשביל המודם הזה.
גם המודם הזה הוא מהמודמים שתופסים יותר מדי מקום, הוא טפס לי שני כניסות USB כי הסתיר חלק מהשקע השני. רוחב הרכיב מעל שני סנטימטרים.
לא מצאתי שום כפתור שעושה reset למכשיר במצב ששכחתי סיסמה למשל.
באתר של provision-isr לא מצאתי שום איזכור למודם הזה (יכול להיות שהוא שם , אני רק לא מצאתי אותו).
תוכנה:
לא ראיתי בשום מקום שום איזכור של שום תוכנה חופשית שרצה בתוכו.
למרות שהמכשיר יוצר ב 2020 , האתר בתוכו מדווח על זכויות יוצרים ל 2016 שזה אומר שכנראה התוכנה שרצה בפנים קצת ישנה .
כאשר מחברים את המודם למחשב מקבלים את המידע הבאה :
[Fri Jul 10 07:29:59 2020] usb 1-2: New USB device found, idVendor=1286, idProduct=812a, bcdDevice= 0.00 [Fri Jul 10 07:29:59 2020] usb 1-2: New USB device strings: Mfr=3, Product=2, SerialNumber=0 [Fri Jul 10 07:29:59 2020] usb 1-2: Product: WUKONG [Fri Jul 10 07:29:59 2020] usb 1-2: Manufacturer: MARVELL
לאחר מספר שניות המודם משנה את מצבו (לא הבנתי מה גורם לכך )
[Fri Jul 10 07:30:10 2020] usb 1-2: New USB device found, idVendor=1286, idProduct=4e31, bcdDevice= 1.00 [Fri Jul 10 07:30:10 2020] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3 [Fri Jul 10 07:30:10 2020] usb 1-2: Product: Mobile Composite Device Bus [Fri Jul 10 07:30:10 2020] usb 1-2: Manufacturer: Marvell [Fri Jul 10 07:30:10 2020] usb 1-2: SerialNumber: 00000000000000000000000 [Fri Jul 10 07:30:10 2020] usbcore: registered new interface driver cdc_ether [Fri Jul 10 07:30:10 2020] usb-storage 1-2:1.5: USB Mass Storage device detected
ומתווסף רכיב cdrom כמו בכל המודמים
[Fri Jul 10 07:30:15 2020] scsi 3:0:0:0: CD-ROM MARVELL Mobile CMCC CD 1.25 PQ: 0 ANSI: 0 [Fri Jul 10 07:30:15 2020] scsi 3:0:0:0: Attached scsi generic sg1 type 5
להפתעתי הגמורה המודם דורש שימוש ב RNDIS
[Fri Jul 10 07:30:15 2020] rndis_host 1-2:1.0 eth0: register 'rndis_host' at usb-0000:00:14.0-2, RNDIS device, AA:BB:CC:DD:EE:FF [Fri Jul 10 07:30:15 2020] usbcore: registered new interface driver rndis_host [Fri Jul 10 07:30:15 2020] usbcore: registered new interface driver uas [Fri Jul 10 07:30:15 2020] rndis_host 1-2:1.0 enxaabbccddeeff: renamed from eth0 [Fri Jul 10 07:30:15 2020] sr 3:0:0:0: [sr0] scsi3-mmc drive: 0x/0x caddy [Fri Jul 10 07:30:15 2020] cdrom: Uniform CD-ROM driver Revision: 3.20 [Fri Jul 10 07:30:15 2020] sr 3:0:0:0: Attached scsi CD-ROM sr0
אני לא חושב שראיתי שימוש ב RNDIS מאז 2010 במודמים , אבל זה לא מפתיע מכיוון שהמוצר לא מיועד לשימוש בלינוקס מלתחילה .
ללא כל פעולות המודם גורם לספאם בקרנל על io (מאות הודעות לשנייה).
[ 1409.942098] Buffer I/O error on dev sr0, logical block 0, async page read [ 1409.942107] blk_update_request: I/O error, dev sr0, sector 4 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0 [ 1409.942109] Buffer I/O error on dev sr0, logical block 1, async page read [ 1409.942125] blk_update_request: I/O error, dev sr0, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0 [ 1409.942127] Buffer I/O error on dev sr0, logical block 0, async page read [ 1409.942134] blk_update_request: I/O error, dev sr0, sector 4 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0 [ 1409.942135] Buffer I/O error on dev sr0, logical block 1, async page read [ 1409.942148] blk_update_request: I/O error, dev sr0, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0 [ 1409.942149] Buffer I/O error on dev sr0, logical block 0, async page read [ 1409.942156] blk_update_request: I/O error, dev sr0, sector 4 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0 [ 1409.942158] Buffer I/O error on dev sr0, logical block 1, async page read [ 1409.942170] blk_update_request: I/O error, dev sr0, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0 [ 1409.942172] Buffer I/O error on dev sr0, logical block 0, async page read [ 1409.942178] blk_update_request: I/O error, dev sr0, sector 4 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0 [ 1409.942180] Buffer I/O error on dev sr0, logical block 1, async page read [ 1409.942192] blk_update_request: I/O error, dev sr0, sector 0 op 0x0:(READ) flags 0x0 phys_seg 1 prio class 0 [ 1409.942193] Buffer I/O error on dev sr0, logical block 0, async page read [ 1409.942200] Buffer I/O error on dev sr0, logical block 1, async page read
בנקודה הזאת usb_modeswitch היה אמור להכנס לפעולה ולשנות את מצב המודם , אבל אפילו קריאה ידנית ל usb_modeswitch בשביל לשנות את המצב לא הצליחו לשנות את מצבו,ניסיתי את הבאים ללא הצלחה
sudo usb_modeswitch -v 1286 -p 4e31 -K sudo usb_modeswitch -v 1286 -p 4e31 -S sudo usb_modeswitch -v 1286 -p 4e31 -A sudo usb_modeswitch -v 1286 -p 4e31 -B sudo usb_modeswitch -v 1286 -p 4e31 -E sudo usb_modeswitch -v 1286 -p 4e31 -O sudo usb_modeswitch -v 1286 -p 4e31 -R sudo usb_modeswitch -v 1286 -p 4e31 -I sudo usb_modeswitch -v 1286 -p 4e31 -Dאפילו ניסיתי לייצר את קובץ חוקי udev ואפילו זה לא עזר :
cat /etc/udev/rules.d/provision.rules
ATTRS{idVendor}=="1286", ATTRS{idProduct}=="4e31", RUN+="usb_modeswitch '%b/%k'"
אז חזרתי לימים הטובים ופשוט עשיתי sudo eject /dev/sr0 והספאם הפסיק.
לצערי הרב המודם לא סיפק שום רכיבים שיכלתי להשתמש בהם תחת /dev כמו למשל /dev/ttyUSB או /dev/ttyACM שהייתי יכול לתת לי למהל אותו מתוך NetworkManager .למה זה טוב ?
הקליטה היתה סבירה , לא הייתה רעה, לא הייתה ממש טובה. פשוט סבירה.
הממשק הראשוני עם המידע היה משהוא שלא נתקלים בו הרבה.
בפעם הראשונה מזה המון זמן אני רואה ממשק שנותן לי מידע טכני במקום אחד ללא תת תפריטים מעצבנים. שאפו למי שחשב על זה ! , אם היית מוסיף גם cell id ביחד עם lac ו עוצמת קליטה זה היה בכלל גאוני !.
המכשיר אפילו תומך בשליחת USSD, רק חבל שזה חבויי בתת תפריט תחת internet.
בתאוריה ניתן למשל לקבל את כמות התקציב שנשאר על הכרטיס, או אפילו לבצע top up על חשבון הכרטיס בממשק הזה.
לא מצאתי אפשרות לביצוע רישום לאזורי CB (אולי יש איזה תת תפריט שפיספסתי).
פירוט טכני למגגלים :
lsusb -vv -d 1286:4e31
Bus 001 Device 007: ID 1286:4e31 Marvell Semiconductor, Inc. Mobile Composite Device Bus
Couldn't open device, some information will be missing
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 239 Miscellaneous Device
bDeviceSubClass 2
bDeviceProtocol 1 Interface Association
bMaxPacketSize0 64
idVendor 0x1286 Marvell Semiconductor, Inc.
idProduct 0x4e31
bcdDevice 1.00
iManufacturer 1
iProduct 2
iSerial 3
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0079
bNumInterfaces 4
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xc0
Self Powered
MaxPower 500mA
Interface Association:
bLength 8
bDescriptorType 11
bFirstInterface 0
bInterfaceCount 2
bFunctionClass 224 Wireless
bFunctionSubClass 1 Radio Frequency
bFunctionProtocol 3 RNDIS
iFunction 5
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 224 Wireless
bInterfaceSubClass 1 Radio Frequency
bInterfaceProtocol 3 RNDIS
iInterface 5
** UNRECOGNIZED: 05 24 00 10 01
** UNRECOGNIZED: 05 24 01 00 01
** UNRECOGNIZED: 04 24 02 00
** UNRECOGNIZED: 05 24 06 00 01
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x85 EP 5 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0010 1x 16 bytes
bInterval 16
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 10 CDC Data
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 5
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x87 EP 7 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x06 EP 6 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 8
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x84 EP 4 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 4
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 11
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
לסיכום , מודם שעושה את עבודותו בלינוקס לאחר קצת מאמצים ,לא מצאתי דרך פשוטה להתמיע אותו בשימוש בתוך סביבת העבודה בה אני משתמש.
3 תגובות:
כך זה בכל הנטסטיקים בשנים האחרונות, אחרי האתחול הם עוברים ל CDROM להתקנת דרייברים ואחר כך ל RNDIS כמתאמי רשת (לא באמת מודם). לפעמים יש דרך להפוך את המצב ולקבל גישת tty ו\או מודם בפרוטוקול כגון NCM או QMI. בהרבה מהם למעשה יש אנדרואיד ואפשר לקבל גישת adb וכן SSH. ממליץ להתחיל מפה:
https://openwrt.org/docs/guide-user/network/wan/wwan/start
כנראה מארוול מייצרים את השבב (מסדרת PXA?) ופרוביז'ן הם OEM.
התועלת הכי מעשית למעבר למצב מודם היא לצאת מה dobule או triple nat (הרבה פעמים IP סלולרי כבר נמצא מאחורי NAT אחד), וRNDIS מכניס מאחורי עוד NAT. אם מחברים אותו לראוטר זה יוצא אפילו quad nat...
גם מבחינת אבטחה צריך לא לסמוך על ה firewall של המכשיר.
אני מכיר את הנושא של cdrom ואז מעבר להתקן אחר (ולכן ישר הלכתי ל usb_modeswitch ו eject ) , אבל בדר"כ זה או cdc_ether או tty כמו שאמרת וממש לא RNDIS שהוא פרוטוקול של מיקרוסופט מעל cdc.
למשל Huawei מספק cdc_ether :
[19453.967000] cdc_ether 1-2:1.0 eth0: register 'cdc_ether' at usb-0000:00:14.0-2, CDC Ethernet Device, 00:11:22:33:44:55
[19453.967130] usbcore: registered new interface driver cdc_ether
הוסף רשומת תגובה