ڪيترن ئي LTE موڊيمس تي هڪ ئي وقت اسپيڊ ٽيسٽ

قرنطين دوران، مون کي ڪيترن ئي سيلولر آپريٽرز لاءِ LTE موڊيمس جي رفتار کي ماپڻ لاءِ هڪ ڊوائيس جي ترقي ۾ حصو وٺڻ جي آڇ ڪئي وئي.

ڪيترن ئي LTE موڊيمس تي هڪ ئي وقت اسپيڊ ٽيسٽ

ڪسٽمر مختلف جاگرافيائي جڳهن تي مختلف ٽيلي ڪام آپريٽرز جي رفتار جو جائزو وٺڻ چاهيندو هو ته جيئن اهو سمجهڻ جي قابل ٿي وڃي ته LTE ڪنيڪشن استعمال ڪندي سامان انسٽال ڪرڻ وقت ڪهڙو سيلولر آپريٽر هن لاءِ سڀ کان بهتر هو، مثال طور، وڊيو براڊڪاسٽز لاءِ. ساڳئي وقت، مسئلي کي آسان ۽ سستي طور تي ممڪن طور تي حل ڪيو وڃي، قيمتي سامان کان سواء.

مان فوري طور تي چوندس ته اهو ڪم تمام آسان ۽ تمام گهڻي ڄاڻ وارو نه آهي؛ مان توهان کي ٻڌايان ٿو ته مون کي ڪهڙيون مشڪلاتون پيش آيون ۽ مون انهن کي ڪيئن حل ڪيو. سو، اچو ته هلون.

ويچاري

LTE ڪنيڪشن جي رفتار کي ماپڻ هڪ تمام پيچيده معاملو آهي: توهان کي صحيح سامان ۽ ماپ جي ٽيڪنڪ چونڊڻ جي ضرورت آهي، ۽ توهان کي سيلولر نيٽ ورڪ جي ٽوپولوجي ۽ آپريشن جي سٺي ڄاڻ پڻ آهي. ان سان گڏ، رفتار ڪيترن ئي عنصرن کان متاثر ٿي سگھي ٿو: سيل تي رڪنن جو تعداد، موسمي حالتون، ايستائين جو سيل کان سيل تائين، نيٽ ورڪ ٽوپولوجي جي ڪري رفتار مختلف ٿي سگھي ٿي. عام طور تي، اهو اڻڄاتل وڏي تعداد سان هڪ مسئلو آهي، ۽ صرف هڪ ٽيليڪ آپريٽر ان کي صحيح طور تي حل ڪري سگهي ٿو.

شروعات ۾، گراهڪ صرف آپريٽرز جي فونن سان ڪوريئر کي هلائڻ چاهيندو هو، سڌو سنئون فون تي ماپون وٺي ۽ پوءِ رفتار جي ماپ جا نتيجا هڪ نوٽ بڪ ۾ لکندو هو. lte نيٽ ورڪن جي رفتار کي ماپڻ لاءِ منهنجو حل، جيتوڻيڪ مثالي ناهي، مسئلو حل ڪري ٿو.

وقت جي کوٽ جي ڪري، مون فيصلا سهولت يا عملي جي حق ۾ نه، پر ترقي جي رفتار جي حق ۾ ڪيا. مثال طور، ريورس ssh استعمال ڪيو ويو ريموٽ رسائي لاءِ، وڌيڪ عملي وي پي اين جي بدران، سرور ۽ هر فرد ڪلائنٽ کي ترتيب ڏيڻ تي وقت بچائڻ لاءِ.

ٽيڪنيڪل ڪم

جيئن مضمون ۾ چيو ويو آهي بغير ٽيڪنيڪل وضاحتن جي: ڇو ڪلائنٽ اهو نٿو چاهي: ٽيڪنيڪل وضاحتن کان سواء ڪم نه ڪريو! ڪڏهن به نه، ڪٿي به!

ٽيڪنيڪل ڪم بلڪل سادو هو، مان ان کي ٿورڙو وڌائيندس آخري صارف جي سمجھ لاءِ. ٽيڪنيڪل حل ۽ سامان جو انتخاب ڪسٽمر طرفان ترتيب ڏنو ويو. تنهن ڪري، ٽيڪنيڪل وضاحت پاڻ، سڀني منظورين کان پوء:

هڪ واحد بورڊ ڪمپيوٽر جي بنياد تي vim2 H modems ذريعي Lte ڪنيڪشن لاءِ اسپيڊ ٽيسٽر ٺاهيوuawei e3372h - 153 ڪيترائي ٽيليڪ آپريٽرز (هڪ کان اين تائين). اهو پڻ ضروري آهي ته يو آر ٽي ذريعي ڳنڍيل GPS وصول ڪندڙ کان ڪوآرڊينيٽ حاصل ڪرڻ. خدمت استعمال ڪندي رفتار جي ماپ ڪريو www.speedtest.net ۽ انھن کي ٽيبل ۾ وجھو جيئن:

ڪيترن ئي LTE موڊيمس تي هڪ ئي وقت اسپيڊ ٽيسٽ

csv فارميٽ ۾ ٽيبل. پوءِ هي نشاني هر 6 ڪلاڪن ۾ اي ميل ذريعي موڪليو. غلطين جي صورت ۾، LED کي ڦوڪيو جيڪو GPIO سان ڳنڍيل آهي.

مون ٽيڪنيڪل وضاحتن کي مفت فارم ۾ بيان ڪيو، ڪيترن ئي منظورين کان پوء. پر ڪم جي معني اڳ ۾ ئي ظاهر آهي. هر شيءِ لاءِ هڪ هفتو ڏنو ويو. پر حقيقت ۾ اهو ٽن هفتن تائين رهيو. اهو هن حقيقت کي نظر ۾ رکندي آهي ته مون اهو صرف منهنجي مکيه نوڪري کان پوء ۽ هفتي جي آخر ۾ ڪيو.

هتي آئون هڪ ڀيرو ٻيهر حقيقت ڏانهن ڌيان ڏيڻ چاهيان ٿو ته صارف اڳ ۾ ئي رفتار جي ماپ سروس ۽ هارڊويئر جي استعمال تي اتفاق ڪيو، جنهن منهنجي صلاحيتن کي تمام گهڻو محدود ڪيو. بجيٽ به محدود هئي، تنهنڪري ڪا خاص خريد نه ڪئي وئي. تنهنڪري اسان کي انهن ضابطن سان راند ڪرڻو پيو.

فن تعمير ۽ ترقي

منصوبو سادو ۽ پڌرو آهي. تنهن ڪري، مان ان کي ڇڏي ڏيندس بغير ڪنهن خاص تبصرن جي.

ڪيترن ئي LTE موڊيمس تي هڪ ئي وقت اسپيڊ ٽيسٽ

مون پوري پروجيڪٽ کي پٿون ۾ لاڳو ڪرڻ جو فيصلو ڪيو، ان حقيقت جي باوجود ته مون کي هن ٻولي ۾ ترقي ڪرڻ جو ڪو به تجربو نه هو. مون ان کي چونڊيو ڇاڪاڻ ته اتي تيار ڪيل مثالن ۽ حلن جو هڪ گروپ هو جيڪي ترقي کي تيز ڪري سگهن ٿا. تنهن ڪري، مان سڀني پروفيشنل پروگرامرن کي چوان ٿو ته پيٿون ۾ ترقي ڪرڻ جي منهنجي پهرين تجربي کي نه ڊاڙون، ۽ مان هميشه خوش آهيان پنهنجي صلاحيتن کي بهتر بڻائڻ لاءِ تعميري تنقيد ٻڌي.

انهي عمل ۾ پڻ مون دريافت ڪيو ته پٿون جا ٻه هلندڙ ورجن 2 ۽ 3 آهن، نتيجي ۾ مان ٽئين تي آباد ٿيس.

هارڊويئر نوڊس

سنگل پليٽ vim2

مون کي هڪ واحد بورڊ ڪمپيوٽر منهنجي مکيه مشين طور ڏنو ويو vim2

ڪيترن ئي LTE موڊيمس تي هڪ ئي وقت اسپيڊ ٽيسٽ

سمارٽ گهر ۽ SMART-TV لاءِ هڪ بهترين، طاقتور ميڊيا پروسيسر، پر هن ڪم لاءِ انتهائي نا مناسب، يا، چئو ته، ناقص موزون. مثال طور، ان جو مکيه او ايس Android آهي، ۽ لينڪس هڪ ثانوي او ايس آهي، ۽ ان جي مطابق ڪو به لينڪس تحت سڀني نوڊس ۽ ڊرائيورن جي اعلي معيار جي آپريشن جي ضمانت نٿو ڏئي. ۽ مان سمجهان ٿو ته ڪجهه مسئلا هن پليٽ فارم جي USB ڊرائيور سان لاڳاپيل هئا، تنهنڪري موڊيمس هن بورڊ تي توقع جي مطابق ڪم نه ڪيو. ان ۾ پڻ تمام ناقص ۽ پکڙيل دستاويز آهن، تنهنڪري هر آپريشن کي ڊاکن ذريعي کوٽڻ ۾ گهڻو وقت لڳندو هو. جيتوڻيڪ GPIO سان عام ڪم تمام گهڻو رت ورتو. مثال طور، مون کي ايل اي ڊي قائم ڪرڻ ۾ ڪيترائي ڪلاڪ لڳا. پر، مقصد حاصل ڪرڻ لاء، اهو بنيادي طور تي اهم نه هو ته اهو ڪهڙي قسم جو واحد بورڊ هو، بنيادي شيء اها هئي ته اهو ڪم ڪيو ۽ USB بندرگاهن هئا.

پهرين، مون کي هن بورڊ تي لينڪس انسٽال ڪرڻ جي ضرورت آهي. هر ڪنهن لاءِ دستاويزن جي جهنگ کي نه ڇڪڻ لاءِ، ۽ انهن لاءِ جيڪي هن سنگل بورڊ سسٽم سان ڊيل ڪندا، مان هي باب لکي رهيو آهيان.

لينڪس کي انسٽال ڪرڻ لاءِ ٻه آپشن آهن: ٻاهرين SD ڪارڊ تي يا اندروني MMC تي. مون هڪ شام گذاري ته اهو معلوم ڪرڻ جي ڪوشش ڪئي ته اهو ڪارڊ سان ڪيئن ڪم ڪجي، تنهنڪري مون ان کي ايم ايم سي تي انسٽال ڪرڻ جو فيصلو ڪيو، جيتوڻيڪ بغير ڪنهن شڪ جي اهو هڪ ٻاهرين ڪارڊ سان ڪم ڪرڻ تمام آسان هوندو.

firmware جي باري ۾ هتي ڪڙي چيو. مان عجيب کان روسي ۾ ترجمو ڪريان ٿو. بورڊ کي چمڪائڻ لاء، مون کي هارڊويئر UART سان ڳنڍڻ جي ضرورت آهي. ڳنڍيو هيٺين طريقي سان.

  • ٽول پن GND: <—> VIMs جي GPIO جو پن 17
  • ٽول پن TXD: <—> VIMs جي GPIO جو Pin18 (Linux_Rx)
  • ٽول پن RXD: <—> Pin19 جو VIMs جي GPIO (Linux_Tx)
  • ٽول پن VCC: <—> VIMs جي GPIO جو پن 20

ڪيترن ئي LTE موڊيمس تي هڪ ئي وقت اسپيڊ ٽيسٽ

ان کان پوء، مون firmware ڊائون لوڊ ڪيو هتي کان. مخصوص firmware ورجن VIM1_Ubuntu-server-bionic_Linux-4.9_arm64_EMMC_V20191231.

ھن فرم ویئر کي اپلوڊ ڪرڻ لاءِ، مون کي يوٽيلٽيز جي ضرورت آھي. ان بابت وڌيڪ تفصيل هتي. مون ان کي ونڊوز جي تحت چمڪائڻ جي ڪوشش نه ڪئي آهي، پر مون کي توهان کي لينڪس تحت فرم ویئر بابت ڪجهه لفظ ٻڌائڻ گهرجن. پهرين، آئون هدايتن جي مطابق يوٽيلٽيز کي انسٽال ڪندس.

git clone https://github.com/khadas/utils
cd /path/to/utils
sudo ./INSTALL

اڙي... ڪجھ به ڪم نٿو ڪري. مون انسٽاليشن اسڪرپٽ کي ايڊٽ ڪرڻ ۾ ڪجهه ڪلاڪ گذاريا ته جيئن هر شي منهنجي لاءِ صحيح طريقي سان انسٽال ٿئي. مون کي ياد ناهي ته مون اتي ڇا ڪيو، پر اتي به اها سرڪس هئي جنهن ۾ گهوڙا هئا. تنهنڪري محتاط رهو. پر انهن افاديت کان سواءِ vim2 کي وڌيڪ تشدد ڪرڻ جو ڪو به مقصد ناهي. اھو بھتر آھي ته ھن سان ڪڏھن به گڙٻڙ نه ڪريو!

دوزخ جي ست حلقن کان پوء، اسڪرپٽ جي ترتيب ۽ تنصيب، مون کي ڪم ڪندڙ افاديت جو هڪ پيڪيج مليو. مون بورڊ کي USB ذريعي منهنجي لينڪس ڪمپيوٽر سان ڳنڍيو، ۽ مٿي ڏنل ڊراگرام مطابق UART پڻ ڳنڍيو.
مان 115200 جي رفتار لاءِ پنهنجو پسنديده مينيڪوم ٽرمينل سيٽ ڪري رهيو آهيان، هارڊويئر ۽ سافٽ ويئر جي غلطي ڪنٽرول کان سواءِ. ۽ اچو ته شروع ڪريون.

ڪيترن ئي LTE موڊيمس تي هڪ ئي وقت اسپيڊ ٽيسٽ

جڏهن UART ٽرمينل ۾ VIM2 لوڊ ڪري رهيو آهيان، آئون هڪ ڪي دٻايو، جهڙوڪ اسپيس بار، لوڊ ٿيڻ کي روڪڻ لاءِ. لائن ظاهر ٿيڻ کان پوء

kvim2# 

مان حڪم داخل ڪريان ٿو:

kvim2# run update

ميزبان تي جنهن تان اسان لوڊ ڪري رهيا آهيون، آئون عمل ڪريان ٿو:

burn-tool -v aml -b VIM2 -i  VIM2_Ubuntu-server-bionic_Linux-4.9_arm64_EMMC_V20191231.img

اهو ئي آهي، اوف. مون چيڪ ڪيو، بورڊ تي لينڪس آهي. لاگ ان/پاسورڊ khadas:khadas.

ان کان پوء، ڪجهه نابالغ شروعاتي سيٽنگون. وڌيڪ ڪم لاءِ، مان سودو لاءِ پاسورڊ کي بند ڪريان ٿو (ها، محفوظ ناهي، پر آسان).

sudo visudo

مون فارم ۾ لائن کي ايڊٽ ڪيو ۽ محفوظ ڪيو

# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) NOPASSWD: ALL

ان کان پوء مون موجوده جڳهه کي تبديل ڪيو ته جيئن وقت ماسڪو ۾ هجي، ٻي صورت ۾ اهو گرين ويچ ۾ هوندو.

sudo timedatectl set-timezone Europe/Moscow

يا

ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime

جيڪڏهن توهان کي اهو ڏکيو لڳندو آهي، ته پوء هي بورڊ استعمال نه ڪريو؛ راسبري پي بهتر آهي. ايمانداري سان.

موڊيم Huawei e3372h - 153

هي موڊيم منهنجي لاءِ رت جو هڪ اهم ذريعو هو، ۽ حقيقت ۾، اهو سڄي منصوبي جي رڪاوٽ بڻجي ويو. عام طور تي، انهن ڊوائيسز لاء نالو "موڊيم" ڪم جي جوهر کي ظاهر نٿو ڪري: هي هڪ طاقتور گڏيل آهي، هارڊويئر جي هن ٽڪرا ۾ هڪ جامع ڊيوائس آهي، جيڪو ڊرائيور کي نصب ڪرڻ لاء هڪ CD-ROM آهي، ۽ پوء نيٽ ورڪ ڪارڊ موڊ ۾ تبديل ڪري ٿو.

تعميراتي طور تي، لينڪس صارف جي نقطي نظر کان، سڀني سيٽنگن کان پوء، اهو هن طرح نظر اچي ٿو: موڊيم کي ڳنڍڻ کان پوء، مون وٽ هڪ eth* نيٽورڪ انٽرفيس آهي، جيڪو dhcp ذريعي IP پتو 192.168.8.100، ۽ ڊفالٽ گيٽ وي حاصل ڪري ٿو. 192.168.8.1 آهي.

۽ سڀ کان اهم لمحو! هي موڊيم ماڊل موڊيم موڊ ۾ ڪم نٿو ڪري سگهي، جيڪو AT حڪمن جي ذريعي سنڀاليو ويندو آهي. هر شي تمام آسان ٿي ويندي، هر موڊيم لاءِ پي پي پي ڪنيڪشن ٺاهيو ۽ پوءِ انهن سان هلايو. پر منهنجي صورت ۾، "پاڻ" (وڌيڪ صحيح طور تي، هڪ لينڪس ڊائيور udev ضابطن جي مطابق)، هڪ ايٿ انٽرفيس ٺاهي ٿو ۽ ان کي dhcp ذريعي هڪ IP پتو تفويض ڪري ٿو.

وڌيڪ مونجهاري کان بچڻ لاءِ، مان صلاح ڏيان ٿو ته لفظ ”موڊيم“ کي وسارڻ ۽ نيٽ ورڪ ڪارڊ ۽ گيٽ وي چوڻ، ڇاڪاڻ ته اصل ۾، اهو هڪ نئين نيٽ ورڪ ڪارڊ کي گيٽ وي سان ڳنڍڻ جهڙو آهي.
جڏهن هڪ موڊيم آهي، اهو ڪو خاص مسئلو ناهي، پر جڏهن هڪ کان وڌيڪ آهي، يعني n-pieces، هيٺ ڏنل نيٽ ورڪ تصوير پيدا ٿئي ٿي.

ڪيترن ئي LTE موڊيمس تي هڪ ئي وقت اسپيڊ ٽيسٽ

اهو آهي، نيٽ ورڪ ڪارڊ، ساڳئي IP پتي سان، هر هڪ ساڳئي ڊفالٽ گيٽ سان. پر حقيقت ۾، انهن مان هر هڪ پنهنجي آپريٽر سان ڳنڍيل آهي.

شروعات ۾، مون وٽ ھڪڙو سادو حل ھو: ifconfig يا ip ڪمانڊ استعمال ڪندي، سڀني انٽرفيس کي بند ڪريو ۽ صرف ھڪڙي کي موڙ ۾ ڦيرايو ۽ ان کي جانچيو. حل سڀني لاء سٺو هو، سواء ان جي سوئچنگ لمحن دوران آئون ڊوائيس سان ڳنڍڻ جي قابل نه هوس. ۽ جيئن ته سوئچنگ بار بار ۽ تيز آهي، مون کي اصل ۾ ڪو به موقعو نه مليو هو ڳنڍڻ جو.

تنهن ڪري، مون دستي طور تي موڊيم جي IP پتي کي تبديل ڪرڻ جو رستو چونڊيو ۽ پوء روڊننگ سيٽنگون استعمال ڪندي ٽرئفڪ کي هلائڻ.

ڪيترن ئي LTE موڊيمس تي هڪ ئي وقت اسپيڊ ٽيسٽ

هي موڊيمس سان منهنجي مسئلن جو خاتمو نه هو: طاقت جي مسئلن جي صورت ۾، اهي بند ٿي ويا، ۽ USB حب کي سٺي مستحڪم پاور سپلائي گهربل هئي. مون هن مسئلي کي حل ڪيو سخت سولڊرنگ ذريعي طاقت کي سڌو حب ڏانهن. هڪ ٻيو مسئلو جنهن جو مون سامنا ڪيو ۽ جنهن سڄي منصوبي کي تباهه ڪيو: ڊوائيس جي ريبوٽ يا ٿڌي شروعات کان پوء، نه سڀئي موڊيم ڳوليا ويا ۽ نه هميشه، ۽ مان اهو طئي نه ڪري سگهيو ته اهو ڇو ٿيو ۽ ڪهڙي الگورتھم سان. پر پهرين شيون پهرين.

موڊيم کي صحيح ڪم ڪرڻ لاءِ، مون انسٽال ڪيو يو ايس بي موڊ سوئچ پيڪيج.

sudo apt update
sudo apt install -y usb-modeswitch

جنهن کان پوء، ڳنڍڻ کان پوء، موڊيم صحيح طور تي معلوم ڪيو ويندو ۽ ترتيب ڏنل udev سب سسٽم طرفان. مان چيڪ ڪريان ٿو صرف موڊيم کي ڳنڍڻ ۽ پڪ ڪرڻ سان ته نيٽ ورڪ ظاهر ٿئي ٿو.
هڪ ٻيو مسئلو جيڪو مان حل نه ڪري سگهيو آهيان: مان ڪيئن حاصل ڪري سگهان ٿو آپريٽر جو نالو جنهن سان اسان ڪم ڪري رهيا آهيون هن موڊيم مان؟ آپريٽر جو نالو موڊيم ويب انٽرفيس ۾ 192.168.8.1 تي موجود آهي. هي هڪ متحرڪ ويب صفحو آهي جيڪو Ajax درخواستن ذريعي ڊيٽا حاصل ڪري ٿو، تنهنڪري صرف صفحي کي ويجٽ ڪرڻ ۽ نالو پارس ڪرڻ ڪم نه ڪندو. سو مون ڏسڻ شروع ڪيو ته ڪيئن ويب پيج ڊولپ ڪجي، وغيره، ۽ محسوس ڪيم ته مان ڪنهن قسم جي بيوقوفي ڪري رهيو آهيان. نتيجي طور، هو اسپيٽ ڪيو، ۽ آپريٽر پاڻ کي اسپيڊ ٽيسٽ API استعمال ڪندي وصول ڪرڻ شروع ڪيو.

گهڻو آسان ٿيندو جيڪڏهن موڊيم کي اي ٽي حڪمن ذريعي رسائي هجي. ان کي ٻيهر ترتيب ڏيڻ، پي پي پي ڪنيڪشن ٺاهڻ، هڪ IP تفويض ڪرڻ، ٽيليڪ آپريٽر حاصل ڪرڻ، وغيره. پر افسوس، مان ڪم ڪري رهيو آهيان جيڪو مون کي ڏنو ويو آهي.

ايس

GPS رسيور مون کي ڏنو ويو هڪ UART انٽرفيس ۽ طاقت هئي. اهو بهترين حل نه هو، پر اهو اڃا تائين قابل عمل ۽ سادو هو. رسيور ڪجهه هن طرح نظر آيو.

ڪيترن ئي LTE موڊيمس تي هڪ ئي وقت اسپيڊ ٽيسٽ

ايماندار ٿيڻ لاء، هي منهنجو پهريون ڀيرو هو GPS وصول ڪندڙ سان ڪم ڪري رهيو هو، پر جيئن مون کي توقع هئي، هر شيء اسان لاء گهڻو وقت اڳ سوچيو ويو هو. تنهنڪري اسان صرف تيار ڪيل حل استعمال ڪندا آهيون.

پهريون، آئون UART_AO_B (UART_RX_AO_B، UART_TX_AO_B) کي GPS سان ڳنڍڻ لاءِ فعال ڪريان ٿو.

khadas@Khadas:~$ sudo fdtput -t s /dtb.img /serial@c81004e0 status okay

ان کان پوء آئون آپريشن جي ڪاميابي جي جانچ ڪريان ٿو.

khadas@Khadas:~$ fdtget /dtb.img /serial@c81004e0 status
okay

اهو حڪم ظاهري طور تي اڏامي تي ديوتري کي تبديل ڪري ٿو، جيڪو تمام آسان آهي.

هن آپريشن جي ڪاميابي کان پوء، ريبوٽ ۽ انسٽال ڪريو GPS ڊيمون.

khadas@Khadas:~$ sudo reboot

GPS ڊيمن کي انسٽال ڪرڻ. مان هر شي کي انسٽال ڪريان ٿو ۽ ان کي بند ڪري ڇڏيان ٿو فوري طور تي وڌيڪ ترتيب ڏيڻ لاءِ.

sudo apt install gpsd gpsd-clients -y
sudo killall gpsd
 
/* GPS daemon stop/disable */
sudo systemctl stop gpsd.socket
sudo systemctl disable gpsd.socket

سيٽنگون فائل کي تبديل ڪندي.

sudo vim /etc/default/gpsd

مان هڪ UART انسٽال ڪري رهيو آهيان جنهن تي GPS لڳندو.

DEVICES="/dev/ttyS4"

۽ پوء اسان هر شي کي ڦيرايو ۽ شروع ڪيو.

/* GPS daemon enable/start */
sudo systemctl enable gpsd.socket
sudo systemctl start gpsd.socket

ان کان پوء، مان GPS سان ڳنڍيو.

ڪيترن ئي LTE موڊيمس تي هڪ ئي وقت اسپيڊ ٽيسٽ

GPS جي تار منهنجي هٿن ۾ آهي، UART ڊيبگر تار منهنجي آڱرين هيٺان نظر اچي رهي آهي.

مان ريبوٽ ڪريان ٿو ۽ چيڪ ڪريان ٿو GPS آپريشن کي استعمال ڪندي GPSmon پروگرام.

ڪيترن ئي LTE موڊيمس تي هڪ ئي وقت اسپيڊ ٽيسٽ

توهان هن اسڪرين شاٽ ۾ سيٽلائيٽس کي نه ڏسي سگهو ٿا، پر توهان GPS وصول ڪندڙ سان ڪميونيڪيشن ڏسي سگهو ٿا، ۽ ان جو مطلب آهي ته سڀ ڪجهه ٺيڪ آهي.

پٿون ۾، مون هن ڊيمن سان ڪم ڪرڻ لاء ڪيترن ئي اختيارن جي ڪوشش ڪئي، پر مون هڪ تي آباد ڪيو جيڪو python 3 سان صحيح ڪم ڪيو.

مان ضروري لائبريري انسٽال ڪريان ٿو.

sudo -H pip3 install gps3 

۽ مان ڪم جو ڪوڊ ٺاھيندو آھيان.

from gps3.agps3threaded import AGPS3mechanism
...

def getPositionData(agps_thread):
	counter = 0;
	while True:
		longitude = agps_thread.data_stream.lon
		latitude = agps_thread.data_stream.lat
		if latitude != 'n/a' and longitude != 'n/a':
			return '{}' .format(longitude), '{}' .format(latitude)
		counter = counter + 1
		print ("Wait gps counter = %d" % counter)
		if counter == 10:
			ErrorMessage("Ошибка GPS приемника!!!")
			return "NA", "NA"
		time.sleep(1.0)
...
f __name__ == '__main__':
...
	#gps
	agps_thread = AGPS3mechanism()  # Instantiate AGPS3 Mechanisms
	agps_thread.stream_data()  # From localhost (), or other hosts, by example, (host='gps.ddns.net')
	agps_thread.run_thread()  # Throttle time to sleep after an empty lookup, default '()' 0.2 two tenths of a second

جيڪڏهن مون کي همراهن حاصل ڪرڻ جي ضرورت آهي، اهو هيٺين ڪال سان ڪيو ويندو آهي:

longitude, latitude = getPositionData(agps_thread)

۽ 1-10 سيڪنڊن اندر مان يا ته ڪوآرڊينيٽ حاصل ڪندس يا نه. ها، مون کي همراهن حاصل ڪرڻ لاءِ ڏهه ڪوششون هيون. بهتر نه، ڪڙي ۽ پڇاڙي، پر اهو ڪم ڪري ٿو. مون اهو ڪرڻ جو فيصلو ڪيو ڇو ته GPS جي خراب استقبال ٿي سگهي ٿي ۽ هميشه ڊيٽا حاصل نه ڪري سگهي. جيڪڏھن توھان ڊيٽا حاصل ڪرڻ جو انتظار ڪريو، پوء جيڪڏھن توھان ھڪڙي ڪمري ۾ ڪم ڪريو، پروگرام ھن جاء تي منجمد ٿي ويندو. تنهن ڪري، مون هن غير مناسب اختيار تي عمل ڪيو.

اصول ۾، جيڪڏهن وڌيڪ وقت هو، اهو ممڪن آهي ته GPS کان سڌو سنئون UART ذريعي ڊيٽا حاصل ڪرڻ، ان کي الڳ موضوع ۾ پارس ڪريو ۽ ان سان گڏ ڪم ڪريو. پر اتي ڪو وقت نه هو، تنهنڪري وحشي طور تي بدصورت ڪوڊ. ۽ ها، مان شرمسار نه آهيان.

ايل ايم

LED کي ڳنڍڻ هڪ ئي وقت سادو ۽ ڏکيو هو. بنيادي مشڪل اها آهي ته سسٽم ۾ پن نمبر بورڊ تي پن نمبر سان مطابقت نٿو رکي ۽ ڇاڪاڻ ته دستاويز کاٻي هٿ سان لکيل آهي. هارڊويئر پن نمبر ۽ OS ۾ پن نمبر جي مقابلي ڪرڻ لاء، توهان کي حڪم هلائڻ جي ضرورت آهي:

gpio readall

سسٽم ۽ بورڊ تي پن خط و ڪتابت جو هڪ ٽيبل ڏيکاريو ويندو. جنهن کان پوءِ مان او ايس ۾ ئي پن کي هلائي سگھان ٿو. منهنجي صورت ۾ LED سان ڳنڍيل آهي GPIOH_5.

ڪيترن ئي LTE موڊيمس تي هڪ ئي وقت اسپيڊ ٽيسٽ

مان GPIO پن کي آئوٽ پٽ موڊ ۾ تبديل ڪريان ٿو.

gpio -g mode 421 out

مان صفر لکان ٿو.

gpio -g write 421 0

مان هڪ لکندو آهيان.

gpio -g write 421 1

ڪيترن ئي LTE موڊيمس تي هڪ ئي وقت اسپيڊ ٽيسٽ
هر شي روشن آهي، "1" لکڻ کان پوء

#gpio subsistem
def gpio_init():
	os.system("gpio -g mode 421 out")
	os.system("gpio -g write 421 1")

def gpio_set(val):
	os.system("gpio -g write 421 %d" % val)
	
def error_blink():
	gpio_set(0)
	time.sleep(0.1)
	gpio_set(1)
	time.sleep(0.1)
	gpio_set(0)
	time.sleep(0.1)
	gpio_set(1)
	time.sleep(0.1)
	gpio_set(0)
	time.sleep(1.0)
	gpio_set(1)

def good_blink():
	gpio_set(1)

ھاڻي، غلطين جي صورت ۾، مان سڏيان ٿو error_blink() ۽ LED خوبصورت طور تي جھليندو.

سافٽ ويئر نوڊس

اسپيڊ ٽيسٽ API

اها وڏي خوشي جي ڳالهه آهي ته speedtest.net سروس جي پنهنجي python-API آهي، توهان ڏسي سگهو ٿا GitHub.

سٺي ڳالهه اها آهي ته اهڙا سورس ڪوڊ آهن جيڪي پڻ ڏسي سگهجن ٿا. هن API سان ڪيئن ڪم ڪجي (سادو مثال) ۾ ڳولهي سگهجن ٿا لاڳاپيل سيڪشن.

مان هيٺ ڏنل حڪم سان پائٿون لائبريري انسٽال ڪريان ٿو.

sudo -H pip3 install speedtest-cli

مثال طور، توهان پڻ انسٽال ڪري سگهو ٿا اسپيڊ ٽيسٽر Ubuntu ۾ سڌو سنئون سافٽ ويئر مان. هي ساڳيو پٿون ايپليڪيشن آهي، جنهن کي پوءِ سڌو ڪنسول مان لانچ ڪري سگهجي ٿو.

sudo apt install speedtest-cli -y

۽ توهان جي انٽرنيٽ جي رفتار کي ماپ ڪريو.

speedtest-cli
Retrieving speedtest.net configuration...
Testing from B***** (*.*.*.*)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by MTS (Moscow) [0.12 km]: 11.8 ms
Testing download speed................................................................................
Download: 7.10 Mbit/s
Testing upload speed......................................................................................................
Upload: 3.86 Mbit/s

نتيجي طور، جيئن مون ڪيو. مون کي هن اسپيڊ ٽيسٽ جي سورس ڪوڊز ۾ داخل ٿيڻو پيو ته جيئن انهن کي مڪمل طور تي منهنجي پروجيڪٽ ۾ لاڳو ڪيو وڃي. سڀ کان اهم ڪمن مان هڪ آهي ٽيليڪ آپريٽر جو نالو حاصل ڪرڻ لاءِ ان کي پليٽ ۾ تبديل ڪرڻ لاءِ.

import speedtest
from datetime import datetime
...
#Указываем конкретный сервер для теста
#6053) MaximaTelecom (Moscow, Russian Federation)
servers = ["6053"]
# If you want to use a single threaded test
threads = None
s = speedtest.Speedtest()
#получаем имя оператора сотовой связи
opos = '%(isp)s' % s.config['client']
s.get_servers(servers)
#получаем текстовую строку с параметрами сервера
testserver = '%(sponsor)s (%(name)s) [%(d)0.2f km]: %(latency)s ms' % s.results.server
#тест загрузки
s.download(threads=threads)
#тест выгрузки
s.upload(threads=threads)
#получаем результаты
s.results.share()

#После чего формируется строка для записи в csv-файл.
#получаем позицию GPS
longitude, latitude = getPositionData(agps_thread)
#время и дата
curdata = datetime.now().strftime('%d.%m.%Y')
curtime = datetime.now().strftime('%H:%M:%S')
delimiter = ';'
result_string = opos + delimiter + str(curpos) + delimiter + 
	curdata + delimiter + curtime + delimiter + longitude + ', ' + latitude + delimiter + 
	str(s.results.download/1000.0/1000.0) + delimiter + str(s.results.upload / 1000.0 / 1000.0) + 
	delimiter + str(s.results.ping) + delimiter + testserver + "n"
#тут идет запись в файл логов

هتي، پڻ، هر شيء ايترو سادو نه ٿي سگهيو، جيتوڻيڪ اهو تمام سادو لڳي ها. شروعات ۾، سرور جي پيٽرولر جي برابر هئي []اهي چون ٿا، بهترين سرور چونڊيو. نتيجي طور، مون وٽ بي ترتيب سرور هئا، ۽، جيئن توهان اندازو لڳائي سگهو ٿا، متغير رفتار. هي ڪافي پيچيده موضوع آهي، هڪ مقرر ٿيل سرور استعمال ڪندي، جيڪڏهن ائين آهي، جامد يا متحرڪ، تحقيق جي ضرورت آهي. پر هتي هڪ مثال آهي رفتار جي ماپ گرافس جو هڪ بي لائن آپريٽر لاءِ جڏهن متحرڪ طور تي هڪ ٽيسٽ سرور چونڊيو ۽ هڪ مستحڪم طور تي مقرر ٿيل.

ڪيترن ئي LTE موڊيمس تي هڪ ئي وقت اسپيڊ ٽيسٽ
رفتار کي ماپڻ جو نتيجو جڏهن هڪ متحرڪ سرور چونڊيو.

ڪيترن ئي LTE موڊيمس تي هڪ ئي وقت اسپيڊ ٽيسٽ
رفتار جي جاچ جو نتيجو، ھڪڙي سختي سان چونڊيل ھڪڙي سرور سان.

جاچ دوران، اتي "فر" ٻنهي هنڌن تي آهي، ۽ ان کي رياضياتي طريقن سان هٽائڻ جي ضرورت آهي. پر هڪ مقرر ٿيل سرور سان اهو ٿورڙو گهٽ آهي ۽ طول و عرض وڌيڪ مستحڪم آهي.
عام طور تي، هي هڪ عظيم تحقيق جي جڳهه آهي. ۽ مان پنهنجي سرور جي رفتار کي ماپ ڪندس iperf يوٽيلٽي استعمال ڪندي. پر اسان ٽيڪنيڪل وضاحتن تي قائم آهيون.

ميل موڪلڻ ۽ غلطيون

ٽپال موڪلڻ لاءِ، مون ڪيترن ئي درجن مختلف آپشنز جي ڪوشش ڪئي، پر آخر ۾ مون ھيٺين تي آباد ڪيو. مون Yandex تي هڪ ميل باڪس رجسٽرڊ ڪيو ۽ پوءِ ورتو هي ميل موڪلڻ جو هڪ مثال آهي. مون ان کي چيڪ ڪيو ۽ ان کي پروگرام ۾ لاڳو ڪيو. هي مثال مختلف اختيارن کي جانچي ٿو، بشمول gmail کان موڪلڻ وغيره. مون پنهنجي ميل سرور کي ترتيب ڏيڻ سان پريشان ٿيڻ نه چاهيو ۽ ان لاءِ وقت نه هو، پر جيئن پوءِ ظاهر ٿيو ته اهو به بيڪار هو.

لاگ ان شيڊولر جي مطابق موڪليا ويا، جيڪڏهن ڪو تعلق آهي، هر 6 ڪلاڪ: 00 وڳي، 06 ايم، 12 منجھند ۽ 18 وڳي. هن کي هن ريت موڪليو.

from send_email import *
...
message_log = "Логи тестирования платы №1"
EmailForSend = ["[email protected]", "[email protected]"]
files = ["/home/khadas/modems_speedtest/csv"]
...
def sendLogs():
	global EmailForSend
	curdata = datetime.now().strftime('%d.%m.%Y')
	сurtime = datetime.now().strftime('%H:%M:%S')
	try:
		for addr_to in EmailForSend:
			send_email(addr_to, message_log, "Логи за " + curdata + " " + сurtime, files)
	except:
		print("Network problem for send mail")
		return False
	return True

شروعاتي طور تي غلطيون پڻ موڪليا ويا. شروع ڪرڻ سان، اھي لسٽ ۾ جمع ڪيا ويا، ۽ پوء پڻ موڪليو ويو شيڊولر استعمال ڪندي، جيڪڏھن ڪو ڪنيڪشن ھو. تنهن هوندي به، حقيقت سان مسئلا پيدا ٿيا ته Yandex هر ڏينهن موڪليل پيغامن جي تعداد تي هڪ حد آهي (هي درد، اداس ۽ ذلت آهي). جيئن ته في منٽ ۾ به وڏي تعداد ۾ غلطيون ٿي سگهن ٿيون، ان ڪري اسان کي ٽپال ذريعي غلطيون موڪلڻ کي ڇڏڻو پيو. تنهن ڪري ذهن ۾ رکو جڏهن خودڪار طور تي Yandex خدمتن ذريعي اهڙي مسئلي بابت معلومات موڪلڻ.

تبصرو سرور

هارڊويئر جي ريموٽ پيس تائين رسائي حاصل ڪرڻ ۽ ان کي ترتيب ڏيڻ ۽ ٻيهر ترتيب ڏيڻ جي قابل ٿيڻ لاءِ، مون کي هڪ خارجي سرور جي ضرورت هئي. عام طور تي، منصفانه ٿيڻ لاء، اهو درست ٿيندو ته سڀني ڊيٽا کي سرور ڏانهن موڪلڻ ۽ ويب انٽرفيس ۾ تمام خوبصورت گرافس ٺاهي. پر سڀ هڪ ڀيرو نه.

VPS لاءِ مون چونڊيو ruvds.com. توهان آساني سان سرور وٺي سگهو ٿا. ۽ عام طور تي، منهنجي مقصدن لاء اهو ڪافي هوندو. پر جيئن ته مون پنهنجي کيسي مان سرور جي ادائيگي نه ڪئي هئي، مون ان کي هڪ ننڍڙي رزرو سان کڻڻ جو فيصلو ڪيو ته اهو ڪافي هوندو جيڪڏهن اسان هڪ ويب انٽرفيس، اسان جو پنهنجو SMTP سرور، VPN وغيره. ان سان گڏ، هڪ ٽيليگرام بوٽ سيٽ ڪرڻ جي قابل ٿي ۽ ان کي بلاڪ ٿيڻ سان مسئلو ناهي. تنهن ڪري، مون کي چونڊيو Amsterdam ۽ هيٺين پيراگراف.

ڪيترن ئي LTE موڊيمس تي هڪ ئي وقت اسپيڊ ٽيسٽ

هارڊويئر سان رابطي جي هڪ طريقي جي طور تي، vim2 چونڊيو هڪ ريورس ssh ڪنيڪشن ۽، جيئن مشق ڏيکاريو ويو آهي، اهو بهترين ناهي. جيڪڏهن ڪنيڪشن گم ٿي ويو آهي، سرور بندرگاهه رکندو آهي ۽ ڪجهه وقت تائين ان ذريعي ڳنڍڻ ناممڪن آهي. تنهن ڪري، اهو اڃا بهتر آهي ته ٻين مواصلاتي طريقن کي استعمال ڪرڻ لاء، مثال طور VPN. مستقبل ۾ مون وي پي اين تي سوئچ ڪرڻ چاهيو، پر وقت نه هو.

مان تفصيل ۾ نه ويندس فائر وال قائم ڪرڻ، حقن کي محدود ڪرڻ، روٽ ايس ايس ايس ڪنيڪشن کي غير فعال ڪرڻ ۽ وي پي ايس قائم ڪرڻ جي ٻين حقيقتن. مان يقين ڪرڻ چاهيان ٿو ته توهان اڳ ۾ ئي سڀ ڪجهه ڄاڻو ٿا. ريموٽ ڪنيڪشن لاءِ، مان سرور تي نئون يوزر ٺاهيان ٿو.

adduser vimssh

مان اسان جي هارڊويئر تي ssh ڪنيڪشن ڪيز ٺاهي ٿو.

ssh-keygen

۽ مان انهن کي اسان جي سرور ڏانهن نقل ڪريان ٿو.

ssh-copy-id [email protected]

اسان جي هارڊويئر تي، مان هر بوٽ تي هڪ خودڪار ريورس ssh ڪنيڪشن ٺاهي ٿو.

[Unit] Description=Auto Reverse SSH
Requires=systemd-networkd-wait-online.service
After=systemd-networkd-wait-online.service
[Service] User=khadas
ExecStart=/usr/bin/ssh -NT -o ExitOnForwardFailure=yes -o ServerAliveInterval=60 -CD 8080 -R 8083:localhost:22 [email protected]
RestartSec=5
Restart=always
[Install] WantedBy=multi-user.target

پورٽ 8083 تي ڌيان ڏيو: اهو طئي ڪري ٿو ته مان ڪهڙي بندرگاهن کي استعمال ڪندس ريورس ssh ذريعي ڳنڍڻ لاءِ. ان کي شامل ڪريو شروع ڪرڻ ۽ شروع ڪريو.

sudo systemctl enable autossh.service
sudo systemctl start autossh.service

توھان ھي حال ڏسي سگھو ٿا:

sudo systemctl status autossh.service

هاڻي، اسان جي VPS سرور تي، جيڪڏهن اسان هلون ٿا:

ssh -p 8083 khadas@localhost

ان کان پوء آئون هارڊويئر جي منهنجي ٽيسٽ پيس ڏانهن وڃان ٿو. ۽ هارڊويئر مان پڻ لاگز ۽ ڪا به ڊيٽا ssh ذريعي منهنجي سرور ڏانهن موڪلي سگهان ٿو، جيڪو تمام آسان آهي.

اهو سڀ ڪجهه گڏ ڪرڻ

ڪيترن ئي LTE موڊيمس تي هڪ ئي وقت اسپيڊ ٽيسٽ
سوئچ آن، اچو ته ترقي ۽ ڊيبنگ شروع ڪريون

ڀائو، چڱو، اهو ئي آهي، مون سڀني نوڊس کي بيان ڪيو. هاڻي اهو سڀ ڪجهه گڏ ڪرڻ جو وقت آهي. توهان ڪوڊ ڏسي سگهو ٿا ھتي صحيح آھي.

ڪوڊ سان گڏ هڪ اهم نقطو: هي پروجيڪٽ هن طرح شروع نه ٿي سگھي، ڇاڪاڻ ته اهو هڪ مخصوص ڪم لاء ٺهيل هو، هڪ مخصوص فن تعمير جي. جيتوڻيڪ مان سورس ڪوڊ ڏئي رهيو آهيان، مان اڃا به تمام قيمتي شيون هتي بيان ڪندس، صحيح متن ۾، ٻي صورت ۾ اهو مڪمل طور تي سمجھ کان ٻاهر آهي.

شروع ۾، مان شروع ڪريان ٿو gps، gpio ۽ لانچ ڪريان ٿو الڳ شيڊيولر ٿريڊ.

#запуск потока планировщика
pShedulerThread = threading.Thread(target=ShedulerThread, args=(1,))
pShedulerThread.start()

شيڊيولر بلڪل سادو آهي: اهو ڏسڻ ۾ اچي ٿو ته پيغام موڪلڻ جو وقت اچي ويو آهي ۽ موجوده غلطي جي صورتحال ڇا آهي. جيڪڏهن ڪو مسئلو آهي پرچم، پوء اسان LED کي ڦوڪيو.

#sheduler
def ShedulerThread(name):
	global ready_to_send
	while True:
		d = datetime.today()
		time_x = d.strftime('%H:%M')
		if time_x in time_send_csv:
			ready_to_send = True
		if error_status:
			error_blink()
		else:
			good_blink()
		time.sleep(1)

هن منصوبي جو سڀ کان ڏکيو حصو هر ٽيسٽ لاء ريورس ايس ايس ايس ڪنيڪشن کي برقرار رکڻ آهي. هر ٽيسٽ ۾ ڊفالٽ گيٽ وي ۽ DNS سرور کي ٻيهر ترتيب ڏيڻ شامل آهي. جيئن ته ڪو به پڙهيل ناهي، ڄاڻو ته ٽرين ڪاٺ جي ريل تي سوار نه آهي. جيڪو به ڳولي ٿو ايسٽر انڊس کي ڪجهه مٺائي ملي ٿي.

هن کي ڪرڻ لاءِ، مان ٺاهيان ٿو هڪ الڳ روٽنگ ٽيبل -set-mark 0x2 ۽ هڪ قاعدو ٽرئفڪ کي ريڊائريڪٽ ڪرڻ لاءِ.

def InitRouteForSSH():
	cmd_run("sudo iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 22 -j MARK --set-mark 0x2")
	cmd_run("sudo ip rule add fwmark 0x2/0x2 lookup 102")

توھان وڌيڪ سکو سگھو ٿا ته اھو ڪيئن ڪم ڪري ٿو ھن مضمون ۾ پڙھو.

جنهن کان پوء آئون هڪ لامحدود لوپ ۾ وڃان ٿو، جتي هر ڀيري اسان کي ڳنڍيل موڊيم جي هڪ فهرست ملي ٿي (ڏسو ته نيٽ ورڪ جي جوڙجڪ اوچتو تبديل ٿي وئي آهي).

network_list = getNetworklist()

نيٽ ورڪ انٽرفيس جي لسٽ حاصل ڪرڻ بلڪل سادو آهي.

def getNetworklist():
	full_networklist = os.listdir('/sys/class/net/')
	network_list = [x for x in full_networklist if "eth" in x and x != "eth0"]
	return network_list

لسٽ حاصل ڪرڻ کان پوء، مون IP پتي سڀني انٽرفيس تي مقرر ڪيو، جيئن مون موڊيم بابت باب ۾ تصوير ۾ ڏيکاريو.

SetIpAllNetwork(network_list)

def SetIpAllNetwork(network_list):
	for iface in network_list:
		lastip = "%d" % (3 + network_list.index(iface))
		cmd_run ("sudo ifconfig " + iface + " 192.168.8." + lastip +" up")

پوءِ مان صرف هر انٽرفيس ذريعي لوپ ۾ وڃان ٿو. ۽ مان هر انٽرفيس کي ترتيب ڏيان ٿو.

	for iface in network_list:
		ConfigNetwork(iface)

def ConfigNetwork(iface):
#сбрасываем все настройки
		cmd_run("sudo ip route flush all")
#Назначаем шлюз по умолчанию
		cmd_run("sudo route add default gw 192.168.8.1 " + iface)
#задаем dns-сервер (это нужно для работы speedtest)
		cmd_run ("sudo bash -c 'echo nameserver 8.8.8.8 > /etc/resolv.conf'")

مان ڪارڪردگي لاءِ انٽرفيس چيڪ ڪريان ٿو، جيڪڏهن ڪو نيٽ ورڪ نه آهي، ته پوءِ مان غلطيون پيدا ڪريان ٿو. جيڪڏهن ڪو نيٽ ورڪ آهي، پوء اهو ڪم ڪرڻ جو وقت آهي!

هتي مان ترتيب ڏيان ٿو ssh روٽنگ هن انٽرفيس تي (جيڪڏهن اهو نه ڪيو ويو آهي)، سرور ڏانهن غلطيون موڪليو جيڪڏهن وقت اچي ويو آهي، لاگس موڪليو ۽ آخرڪار هڪ اسپيڊ ٽيسٽ هلائي ۽ لاگز کي csv فائل ۾ محفوظ ڪريو.

if not NetworkAvalible():
....
#Здесь мы формируем ошибки
....
else: #Есть сеть, ура, работаем!
#Если у нас проблемный интерфейс, на котором ssh, то меняем его
  if (sshint == lastbanint or sshint =="free"):
    print("********** Setup SSH ********************")
    if sshint !="free":
      сmd_run("sudo ip route del default via 192.168.8.1 dev " + sshint +" table 102")
    SetupReverseSSH(iface)
    sshint = iface
#раз сетка работает, то давай срочно все отправим!!!
    if ready_to_send:
      print ("**** Ready to send!!!")
        if sendLogs():
          ready_to_send = False
        if error_status:
          SendErrors()
#и далее тестируем скорость и сохраняем логи. 

اهو ريورس ssh قائم ڪرڻ جي فنڪشن جو ذڪر ڪرڻ جي قابل آهي.

def SetupReverseSSH(iface):
	cmd_run("sudo systemctl stop autossh.service")
	cmd_run("sudo ip route add default via 192.168.8.1 dev " + iface +" table 102")
	cmd_run("sudo systemctl start autossh.service")

۽ يقينا، توهان کي شروع ڪرڻ لاء هي سڀ خوبصورتي شامل ڪرڻ جي ضرورت آهي. ائين ڪرڻ لاءِ مان هڪ فائيل ٺاهيان ٿو:

sudo vim /etc/systemd/system/modems_speedtest.service

۽ مان ان ۾ لکي ٿو:

[Unit] Description=Modem Speed Test
Requires=systemd-networkd-wait-online.service
After=systemd-networkd-wait-online.service
[Service] User=khadas
ExecStart=/usr/bin/python3.6 /home/khadas/modems_speedtest/networks.py
RestartSec=5
Restart=always
[Install] WantedBy=multi-user.target

مان خودڪار لوڊ ڪرڻ کي چالو ڪيو ۽ شروع ڪيو!

sudo systemctl enable modems_speedtest.service
sudo systemctl start modems_speedtest.service

هاڻي مان ڏسي سگهان ٿو لاگ ان جو حڪم استعمال ڪندي ڇا ٿي رهيو آهي:

journalctl -u modems_speedtest.service --no-pager -f

نتيجا

خير، هاڻي سڀ کان اهم ڳالهه اها آهي ته نتيجي ۾ ڇا ٿيو؟ هتي ڪجھ گرافس آھن جيڪي مون ترقي ۽ ڊيبگنگ جي عمل دوران پڪڙڻ ۾ مدد ڪئي. هيٺ ڏنل اسڪرپٽ سان gnuplot استعمال ڪندي گراف ٺاهيا ويا.

#! /usr/bin/gnuplot -persist
set terminal postscript eps enhanced color solid
set output "Rostelecom.ps"
 
#set terminal png size 1024, 768
#set output "Rostelecom.png"
 
set datafile separator ';'
set grid xtics ytics
set xdata time
set ylabel "Speed Mb/s"
set xlabel 'Time'
set timefmt '%d.%m.%Y;%H:%M:%S'
set title "Rostelecom Speed"

plot "Rostelecom.csv" using 3:6 with lines title "Download", '' using 3:7 with lines title "Upload"
 
set title "Rostelecom 2 Ping"
set ylabel "Ping ms"
plot "Rostelecom.csv" using 3:8 with lines title "Ping"

پهريون تجربو Tele2 آپريٽر سان هو، جيڪو مون ڪيترن ئي ڏينهن تائين ڪيو.

ڪيترن ئي LTE موڊيمس تي هڪ ئي وقت اسپيڊ ٽيسٽ

هتي مون هڪ متحرڪ ماپنگ سرور استعمال ڪيو. رفتار جي ماپ ڪم ڪري ٿي، پر تمام گهڻو ڦيرايو، پر ڪجهه اوسط قدر اڃا به نظر اچي ٿو، ۽ اهو ڊيٽا کي فلٽر ڪندي حاصل ڪري سگهجي ٿو، مثال طور، هلندڙ اوسط سان.

بعد ۾ مون ٻين ٽيلي ڪام آپريٽرن لاءِ ڪيترائي گراف ٺاهيا. هن معاملي ۾، اتي اڳ ۾ ئي هڪ ٽيسٽ سرور هو، ۽ نتيجا به تمام دلچسپ هئا.

ڪيترن ئي LTE موڊيمس تي هڪ ئي وقت اسپيڊ ٽيسٽ

ڪيترن ئي LTE موڊيمس تي هڪ ئي وقت اسپيڊ ٽيسٽ

ڪيترن ئي LTE موڊيمس تي هڪ ئي وقت اسپيڊ ٽيسٽ

ڪيترن ئي LTE موڊيمس تي هڪ ئي وقت اسپيڊ ٽيسٽ

جئين توهان ڏسي سگهو ٿا، موضوع هن ڊيٽا جي تحقيق ۽ پروسيسنگ لاء تمام وسيع آهي، ۽ واضح طور تي ڪم جي ٻن هفتن لاء آخري نه آهي. پر…

ڪم جو نتيجو

ڪم اوچتو ئي مڪمل ڪيو ويو ڇاڪاڻ ته حالتن جي منهنجي قابو کان ٻاهر. هن پروجيڪٽ جي ڪمزورين مان هڪ، منهنجي موضوعي راءِ ۾، موڊيم هو، جيڪو حقيقت ۾ ٻين موڊيم سان گڏ ڪم ڪرڻ نه چاهيندو هو، ۽ هر ڀيري لوڊ ٿيڻ تي اهڙيون چالون ٺاهيندو هو. انهن مقصدن لاء، ٻيا موڊيم ماڊلز جي وڏي تعداد ۾ آهن؛ عام طور تي اهي اڳ ۾ ئي ميني PCI-e فارميٽ ۾ آهن ۽ ڊوائيس اندر نصب ٿيل آهن ۽ ترتيب ڏيڻ ۾ تمام آسان آهن. پر اهو هڪ مڪمل طور تي مختلف ڪهاڻي آهي. پروجيڪٽ دلچسپ هو ۽ مون کي ڏاڍي خوشي هئي ته مان ان ۾ حصو وٺڻ جي قابل ٿيس.

ڪيترن ئي LTE موڊيمس تي هڪ ئي وقت اسپيڊ ٽيسٽ

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

تبصرو شامل ڪريو