áá®ážááá·áºááœá²áá¬ážá ááºá¡ááœááºážá áááºáá°áá¬á¡á±á¬áºááá±áá¬áá»á¬ážá áœá¬á¡ááœáẠLTE ááá¯áááºáá»á¬ážá á¡ááŒááºááŸá¯ááºážááᯠááá¯ááºážáá¬áááºá¡ááœáẠá ááºáá á¹á ááºážááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááœáẠáá«áááºááẠáá»áœááºá¯ááºá¡á¬áž áááºážááŸááºážáá²á·áá«áááºá
LTE áá»áááºáááºááŸá¯ááᯠá¡áá¯á¶ážááŒá¯á á ááºáá á¹á ááºážáá»á¬ážááᯠáááºáááºáá¬ááœáẠá¥ááá¬á áá®áá®ááá¯áá¯ááºááœáŸáá·áºááŸá¯áá»á¬ážá¡ááœáẠáááºááá·áºáááºáá°áá¬á¡á±á¬áºááá±áá¬ááẠáá°á·á¡ááœáẠá¡ááá·áºáá±á¬áºáá¯á¶ážááŒá áºááŒá±á¬ááºáž áá¬ážáááºááá¯ááºá á±áááºá¡ááœáẠáá±á¬ááºáááºááẠááá°áá®áá±á¬ áááá®áááºáááºáá±áá¬áá»á¬ážááŸá áááºáá®ááœááºážá¡á±á¬áºááá±áá¬áá»á¬ážá ááŒááºááŸá¯ááºážááᯠá¡áá²ááŒááºááá¯áá«áááºá áá áºáá»áááºáááºážááŸá¬áááºá á á»á±ážááŒá®ážáá±á¬áááááá¬áá»á¬ážááá«áá² ááŒá¿áá¬ááᯠáááºááá¯ááºááá»áŸ ááá¯ážááá¯ážááŸááºážááŸááºážááŸáá·áº áá±ážáá±á«áá±á«ááŒáá·áº ááŒá±ááŸááºážááááºááŒá áºáááºá
áá«áá»ááºáá»ááºážááŒá±á¬ááẠá¡áá¯ááºá á¡ááá¯ážááŸááºážáá¯á¶ážáá²á· á¡ááááá¬á¡ááŸááá¯á¶ážááá¯ááºáá°ážá áá«ááŒá¯á¶ááœá±á·áá²á·ááá²á· ááŒá¿áá¬ááœá±áá²á· á¡á²áá«ááœá±ááᯠáááºááá¯ááŒá±ááŸááºážáá²á·áá²ááá¯áᬠááŒá±á¬ááŒáááºá áá«ááᯠááœá¬ážááŒáá¡á±á¬ááºá
ááœá±á¬ááá¯
LTE áá»áááºáááºááŸá¯á á¡ááŒááºááŸá¯ááºážááᯠááá¯ááºážáá¬ááŒááºážááẠá¡ááœááºááŸá¯ááºááœá±ážáá±á¬ááá á¹á ááŒá áºáááº- áááºááẠááŸááºáááºáá±á¬ á ááºáááááá¬ááŸáá·áº ááá¯ááºážáá¬ááŒááºážáááºážááá¬ááᯠááœá±ážáá»ááºááẠááá¯á¡ááºááŒá®áž áá²ááºáá°áá¬ááœááºáááºá topology ááŸáá·áº áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáá±á¬ááºážá áœá¬áá¬ážáááºáá¬ážááẠááá¯á¡ááºáá«áááºá ááá¯á·á¡ááŒááºá ááŒááºááŸá¯ááºážá¡á¬áž á¡ááŒá±á¬ááºážáááºážáá»á¬ážá áœá¬ááŒáá·áº ááœáŸááºážááá¯ážááá¯ááºáááº- áá²ááºáá áºáá¯ááŸá á á¬áááºážááœááºážáá°á¡áá±á¡ááœááºá áá¬áá®á¥áá¯á¡ááŒá±á¡áá±á áá²ááºáá áºáá¯ááŸáá²ááºáá áºáá¯ááá¯á· ááŒááºááŸá¯ááºážááẠááœááºááẠtopology ááŒá±á¬áá·áº áááááá¬áᬠááŒá±á¬ááºážáá²ááá¯ááºáááºá áá±áá°áá»á¡á¬ážááŒáá·áºá á€áááºááŸá¬ ááááá±ážáá±á¬ á¡áá±á¡ááœáẠá¡áá»á¬ážá¡ááŒá¬ážááŸááá±á¬ ááŒá¿áá¬ááŒá áºááŒá®áž áááºáá®ááœááºážá¡á±á¬áºááá±áá¬ááŸáá¬áá»áŸáẠáááºážááᯠááŸááºáááºá áœá¬ ááŒá±ááŸááºážááá¯ááºáááºááŒá áºáááºá
áááŠážááœááºá áá±á¬ááºáááºááẠá¡á±á¬áºááá±áá¬áá»á¬ážá áá¯ááºážáá»á¬ážááŸáá·áºá¡áá° á¡ááŒááºáá»á±á¬ááá¯á·ááŸá¯ááᯠáá±á¬ááºážááŸááºáááºá áá¯ááºážáá±á«áºááœáẠááá¯ááºááá¯ááºááá¯ááºážáá¬ááŸá¯áá»á¬áž ááŒá¯áá¯ááºááŒá®ážáá±á¬áẠááŒááºááŸá¯ááºážááá¯ááºážáá¬ááŸá¯ááááºáá»á¬ážááᯠááŸááºá á¯á á¬á¡á¯ááºááœáẠáá»áá±ážáááºáᬠááá¹áááŸááá²á·áááºá lte ááœááºáááºáá»á¬ážá á¡ááŒááºááŸá¯ááºážááᯠááá¯ááºážáá¬ááŒááºážá¡ááœáẠáá»áœááºá¯ááºáááŒá±ááŸááºážáá»ááºááẠá¡áá±á¬ááºážáá¯á¶ážááá¯ááºáá±á¬áºáááºáž ááŒá¿áá¬ááᯠááŒá±ááŸááºážáá±ážáá«áááºá
á¡áá»áááºáááŸáááŒááºážááŒá±á¬áá·áº áá»áœááºá¯ááºááẠá¡áááºááŒá±ááŸá¯ ááá¯á·ááá¯áẠáááºááœá±á·áá»ááŸá¯ááᯠáá»ááºááŸá¬áá¬ááá±ážáá² ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááᯠá¡ááŸáááºá¡áá¯ááºááŒáá·áº áá¯á¶ážááŒááºáá»ááºáá»áá²á·áááºá á¥ááá¬á¡á¬ážááŒáá·áºá áá¬áá¬ááŸáá·áº client áá áºáá¯áá»ááºážá á®ááᯠá áá áºááá·áºááœááºážáá¬ááœáẠá¡áá»áááºáá¯ááºáááºáá¬á á±áááºá¡ááœáẠááá¯ááá¯áááºááœá±á·áá»áá±á¬ VPN á¡á á¬áž Reverse ssh ááᯠá¡áá¯á¶ážááŒá¯áá¬ážáááºá
áááºážááá¬á¡áá¯ááº
áá±á¬ááºážáá«ážááœááºáá±á¬áºááŒáá¬ážááá·áºá¡ááá¯ááºáž
áááºážááá¬ááá¯ááºáá¬áá¬áááºá á¡áá±á¬áºáá±ážááá¯ážááŸááºážáá«áááºá áá±á¬ááºáá¯á¶ážá¡áá¯á¶ážááŒá¯áá°áá²á· áá¬ážáááºááŸá¯á¡ááœáẠá¡áááºážáááºáá»á²á·ááŒáá«áááºá áááºážááá¬ááá¯ááºáᬠááŒá±ááŸááºážáá»ááºáá»á¬ážááŸáá·áº áá á¹á ááºážáááááá¬áá»á¬ážá ááœá±ážáá»ááºááŸá¯ááᯠáá±á¬ááºáááºá ááœáŸááºááŒá¬ážáá²á·áááºá ááá¯á·ááŒá±á¬áá·áºá á¡á¬ážáá¯á¶ážá¡áááºááŒá¯ááŒá®ážáá±á¬ááºá áááºážááá¬ááá¯ááºáá¬áááºááŸááºáá»ááºááá¯ááºááá¯ááºá
áá áºáá¯áááºážáá¯ááºááœááºááŒá°áá¬á¡áá±á«áºá¡ááŒá±áá¶áááºá á¡ááŒá±á¬ááºážáááºáž á H modems ááŸáááá·áº lte áááºááœááºááŸá¯áá»á¬ážá¡ááœááºá¡ááŒááºááŸá¯ááºážá ááºážáááºááŸá¯ááŒá¯áá¯ááºáá«áuawei e3372h - 153 áááºáá®ááœááºážá¡á±á¬áºááá±áá¬áá»á¬ážá áœá¬ (áá áºáá¯á០n)á UART ááŸáá áºááá·áº áá»áááºáááºáá¬ážáá±á¬ GPS áááºáá¶áááááá¬á០ááŒáá®ááááºáá»á¬ážááᯠáááºáá¶ááá°áááºáááºáž ááá¯á¡ááºáá«áááºá áááºáá±á¬ááºááŸá¯ááᯠá¡áá¯á¶ážááŒá¯á á¡ááŒááºááŸá¯ááºážááá¯ááºážáá¬ááŸá¯áá»á¬áž ááŒá¯áá¯ááºáá«á
www.speedtest.net ááŒá®ážáá»áŸááºá
csv áá±á¬áºáááºááŒáá·áº ááá¬ážá ááá¯á·áá±á¬áẠá€ááá¯ááºážáá¯ááºááᯠ6 áá¬áá®ááá¯ááºáž á¡á®ážáá±ážááºááŒáá·áº áá±ážááá¯á·áá«á á¡ááŸá¬ážá¡ááœááºážáá»á¬ážááŸááá»áŸáẠGPIO ááŸáá·áºáá»áááºáááºáá¬ážáá±á¬ LED ááá¯ááŸáááºáá¯ááºáá¯ááºáá«á
ááœáá·áºááŒá¯áá»ááºáá»á¬ážá áœá¬áááŒá®ážáá±á¬á¡áá« áááºážááá¬ááá¯ááºáᬠáááºááŸááºáá»ááºáá»á¬ážááᯠá¡ááá²á·áá¯á¶á á¶ááŒáá·áº áá±á¬áºááŒáá²á·áááºá áá«áá±ááá·áº á¡áá¯ááºáá²á· á¡áááá¹áá«ááºááᯠááŒááºáá±ááá«ááŒá®á á¡áá¬á¡á¬ážáá¯á¶ážá¡ááœáẠáá áºáááºááᯠáá±ážáá²á·áááºá áá«áá±ááá·áº áááºááœá±á·ááŸá¬ áá¯á¶ážáááºááŒá¬áááºá á€á¡áá»ááºááẠáá»áœááºá¯ááºá á¡áááá¡áá¯ááºááŸáá·áº á áá±á
á€áá±áá¬ááœáẠáá»áœááºá¯ááºááẠáá»áœááºá¯ááºáá áœááºážáá±á¬ááºááá¯ááºáááºáá»á¬ážááᯠáá»á¬ážá áœá¬ááá·áºáááºáá¬ážááá·áº á¡ááŒááºááŸá¯ááºážááá¯ááºážáá¬ááŒááºážáááºáá±á¬ááºááŸá¯ááŸáá·áº áá¬á·ááºáá²á¡áá¯á¶ážááŒá¯ááŸá¯ááŸáá·áºáááºáááºá áá±á¬ááºáááºá ááŒáá¯áááºááá±á¬áá°áá¬ážááá·áºá¡áá»ááºááᯠáááºáá¶á¡á¬áá¯á¶á áá¯ááºá á±ááá¯áá«áááºá áááºáá»ááºáááºáž ááá·áºáááºáá¬ážáá¬ááá¯á· áá¬á០á¡áá°ážáááẠááááºááŒá áºáá²á·áá°ážá áá«ááŒá±á¬áá·áº áá®á ááºážáá»ááºážááœá±áá²á· áá á¬ážááááºá
áááá¯áá¬ááŸáá·áº ááœá¶á·ááŒáá¯ážááá¯ážáááºáá±áž
á¡á á®á¡á á¥áºá ááá¯ážááŸááºážááŒá®áž áááá¬áá«áááºá ááá¯á·ááŒá±á¬áá·áº á¡áá°ážááŸááºáá»ááºááá±ážáá² áá¬ážáá²á·áá«áááºá
áá»áœááºá¯ááºááẠá€áá¬áá¬á
áá¬ážááœáẠáá®ááœááºáááºáá®ážááŸá¯ áá¯á¶ážáá¡ááœá±á·á¡ááŒá¯á¶áááŸááá±á¬áºáááºáž Python ááœáẠááá±á¬áá»ááºáá
áºáá¯áá¯á¶ážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááẠáá¯á¶ážááŒááºáá²á·áááºá ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááᯠá¡ááŸáááºááŒáŸáá·áºáá±ážááá¯ááºáá±á¬ á¡áááºááá·áºáá¯ááºáá¬ážáá±á¬ á¥ááá¬áá»á¬ážááŸáá·áº ááŒá±ááŸááºážáá»ááºáá»á¬ážá
áœá¬ááŸááá±á¬ááŒá±á¬áá·áº áááºážááᯠááœá±ážáá»ááºáá²á·áááºá ááá¯á·ááŒá±á¬áá·áºá áá»áœááºá¯ááºááẠpython ááœáẠáá»áœááºá¯ááºáááááá¯á¶ážáá®ááœááºááŸá¯á¡ááœá±á·á¡ááŒá¯á¶ááᯠá¡ááŒá
áºáááºááŒááºážáááŒá¯ááẠááá±á¬áºáááºááŸááºáááºáááá¯ááááºáá¬áá»á¬ážá¡á¬ážáá¯á¶ážááᯠáá±á¬ááºážááá¯áá¬ážááŒá®áž áá»áœááºá¯ááºáá
áœááºážáááºáá»á¬ážááá¯ážáááºá
á±ááẠá¡ááŒá¯ááá±á¬áá±á¬ááºáá±á¬áá±áááºááŸá¯áá»á¬ážááᯠááŒá¬ážáá¬áááá·áºá¡ááœáẠá¡ááŒá²áááºážááŒá±á¬ááºáá«áááºá
áá¯ááºáááºážá ááºááœááºáááºáž python ááœáẠrun áá±áá±á¬ version 2 ááŸáá·áº 3 ááŸá áºáá¯ááŸááááºááᯠááœá±á·ááŸááá²á·ááŒá®áž ááááºá¡áá±ááŒáá·áº áá»áœááºáá±á¬áº ááááááŒá±á¬ááºááᯠááŒá±ááŸááºážáá²á·áááºá
áá¬á·ááºáá²áá¯á¶ááŸááºáá»á¬áž
áááºážáááºááŒá¬ážáá áºáá»áẠvim2
áá¯ááºááŒá¬ážááœááºááŒá°áá¬áá
áºáá¯á¶ážááᯠáá»áœááºá¯ááºááááºáá
ááºá¡ááŒá
Ạáá±ážá¡ááºáá²á·áááºá
á
áááºá¡áááºááŸáá·áº SMART-TV á¡ááœáẠá¡ááœááºáá±á¬ááºážááœááºááŒá®áž á¡á
áœááºážáááºáá±á¬ áá®áá®áá¬áááá¯áááºáá¬áá
áºáá¯á ááá¯á·áá±á¬áº á€áá¯ááºáááºážá¡ááœáẠá¡ááœááºááá·áºáá»á±á¬áºááŸá¯áááŸááá«á ááá¯á·ááá¯áẠááá·áºáá»á±á¬áºááŸá¯áááŸááᯠááá¯ááŒáá«á
áá¯á·á á¥ááá¬á¡á¬ážááŒáá·áºá áááºážáá¡ááá OS ááẠAndroid ááŒá
áºááŒá®áž Linux ááẠáá¯ááá OS ááŒá
áºááŒá®áž Linux á¡á±á¬ááºááœáẠnode áá»á¬ážááŸáá·áº drivers áá»á¬ážá¡á¬ážáá¯á¶ážá á¡áááºá¡ááœá±ážááŒáá·áºáá¯ááºáá±á¬ááºááŸá¯ááᯠáááºáá°áá»áŸ á¡á¬ááá¶áá»ááºáááŸááá«á ááŒá¿áá¬á¡áá»áá¯á·ááẠá€ááááºáá±á¬ááºážá USB áááá¯ááºáá¬áá»á¬ážááŸáá·áº áááºá
ááºáá±áááºáᯠáá»áœááºáá±á¬áºáá°ááááºá ááá¯á·ááŒá±á¬áá·áº ááá¯áááºáá»á¬ážááẠá€áá¯ááºááœáẠáá»áŸá±á¬áºááá·áºáá¬ážááá·áºá¡ááá¯ááºáž á¡áá¯ááºááá¯ááºáá«á áááºážááœáẠá¡ááœááºáá¶á·áá»ááºážááŒá®áž ááŒáá·áºáá»á²áá±áá±á¬ á
á¬ááœááºá
á¬áááºážáá»á¬ážáá«ááŸááá±á¬ááŒá±á¬áá·áº áááºáááºááŸá¯áá
áºáá¯á
á®ááá¯ááºážááœáẠáááºá¹áá±á¬áá»ááºážáá»á¬ážááᯠáá°ážáá±á¬áºáá¬ááœáẠá¡áá»áááºáá»á¬ážá
áœá¬áá°áá²á·ááááºá GPIO áá²á· áá¬áá¬ááºá¡áá¯ááºááœá±áá±á¬áẠááœá±ážááœá± á¡áá»á¬ážááŒá®ážáá²á á¥ááá¬á¡á¬ážááŒáá·áºá LED ááá¯áááºáááºáááºáá¬áá®áá»á¬ážá
áœá¬ááŒá¬áááºá ááá¯á·áá±á¬áº áááºááœááºáá»ááºááŸááááºá áááºážááẠáááºááá·áº single-board á¡áá»áá¯ážá¡á
á¬ážááŒá
áºáááºááᯠá¡ááŒá±áá¶á¡á¬ážááŒáá·áº á¡áá±ážáááŒá®ážáá«á á¡áááá¡áá»ááºááŸá¬ áááºážááẠá¡áá¯ááºáá¯ááºááŒá®áž USB á¡áá±á«ááºáá»á¬ážáá«ááŸááááºá
ááááŠážá áœá¬á á€áá¯ááºááœáẠLinux ááá¯ááá·áºááœááºážáááºááá¯á¡ááºáááºá áá°ááá¯ááºážá¡ááœáẠá á¬ááœááºá á¬áááºážáá»á¬ážá ááá¯ááºážá áá¯ááºážááŸá¯ááᯠáááááá¯ááºá á±áááºááŸáá·áº ဠsingle-board system ááᯠááá¯ááºááœááºááá·áºáá°áá»á¬ážá¡ááœááºáááºáž á€á¡áááºážááᯠáá»áœááºá¯ááºáá±ážáá¬ážáá±áá«áááºá
Linux ááᯠááá·áºááœááºážááẠááœá±ážáá»ááºá áᬠááŸá áºáá¯ááŸááááº- ááŒááºá SD áááºááœáẠááá¯á·ááá¯áẠá¡ááœááºážááá¯ááºáž MMC ááœáẠááŒá áºáááºá áááºáá²á· áááºááá¯á¡áá¯ááºáá¯ááºáááá²ááá¯áᬠá¡ááŒá±ááŸá¬ááá¯á· áá áºááá±áááºážááŸá¬ áá±áá²á·ááá²á·á¡ááœááºááŒá±á¬áá·áº ááŒááºááááºáá²á· á¡áá¯ááºáá¯ááºááᬠááá¯ááœááºáá°áááºááá¯á· áá¶áááááŸááá² MMC ááŸá¬ ááá·áºááœááºážááá¯á· áá¯á¶ážááŒááºáá²á·áá«áááºá
Firmware á¡ááŒá±á¬ááºáž
- Tool Pin GND- <â> VIMs á GPIO á Pin17
- Tool Pin TXD- <â> VIMs á GPIO (Linux_Rx) á Pin18
- Tool Pin RXD- <â> VIMs á GPIO (Linux_Tx) á Pin19
- Tool Pin VCC- VIMs á GPIO á <â> Pin20
ááŒá®ážáá±á¬ááºá áá»áœááºáá±á¬áº firmware ááá¯áá±á«ááºážáá¯ááºáá¯ááºáá«á
ဠFirmware ááᯠá¡ááºáá¯ááºáááºáááºá¡ááœáẠáá»áœááºá¯ááºááẠá¡áá¯á¶ážáááºááŸá¯áá»á¬áž ááá¯á¡ááºáá«áááºá áá®á¡ááŒá±á¬ááºážá¡áá±ážá
áááº
git clone https://github.com/khadas/utils
cd /path/to/utils
sudo ./INSTALL
á¡ááºáž... áá¬ááŸáááŒá áºáá°ážá áá»áœááºá¯ááºá¡ááœáẠá¡á á á¡áá¬áᬠááŸááºáááºá áœá¬ ááá·áºááœááºážááá¯ááºááẠáááºáááºááá áºáá»á¬ážááᯠáááºážááŒááºááẠáá¬áá®á¡áááºážáááºááŒá¬áá²á·áááºá á¡á²áá®ááŸá¬ áá¬ááœá±áá¯ááºáá²á·ááẠáááŸááºáááá±ááá·áº ááŒááºážá á®ážáá²á· áááºáááºááœá²áááºáž ááŸááááºá áá«ááŒá±á¬áá·áº ááááá¬ážáá«á ááá¯á·áá±á¬áº á€á¡áá¯á¶ážá¡áá±á¬ááºáá»á¬ážáááŸááá»áŸáẠvim2 ááᯠáá±á¬ááºáááºááŸááºážáááºážááŸáááºá ááºááẠá¡ááŒá±á¬ááºážáááŸááá«á áá°áá²á· áá¯á¶ážááááŸá¯ááºáᬠááá¯áá±á¬ááºážáá«áááºá
ááá²á
ááºááá¯ááºáž áá¯áá
áºáá¯á áá¬ááºááœáŸááºážááœá²á·á
ááºážáá¯á¶ááŸáá·áº áááºáááºááŒá®ážáá±á¬ááºá á¡áá¯ááºáá¯á¶ážáááááá¬á¡á
á¯á¶á¡áááºááᯠáá»áœááºáá±á¬áºáááºáá¶áááŸááá²á·áááºá áá»áœááºá¯ááºááẠáá¯ááºá¡á¬áž USB ááŸáá
áºááá·áº áá»áœááºá¯ááºá Linux ááœááºáá»á°áá¬ááá¯á· áá»áááºáááºááŒá®áž á¡áááºáá±á¬áºááŒáá« áá¯á¶ááŒááºážá¡ááá¯ááºáž UART ááᯠáá»áááºáááºáá¬ážáááºá
áá¬á·ááºáá²ááŸáá·áº áá±á¬á·ááºáá²ááºá¡ááŸá¬ážá¡ááœááºážáááááºážáá»á¯ááºáá² áá»áœááºá¯ááºáá¡ááŒáá¯ááºáá¯á¶áž minicom terminal ááᯠ115200 á¡ááŒááºááŸá¯ááºážááŒáá·áº ááŒááºáááºáááºááŸááºáá«áááºá á
ááá¯ááºááŒáá¡á±á¬ááºá
UART terminal ááœáẠVIM2 ááá¯ááœáá·áºáá±á¬á¡áá« loading áááºááẠspacebar áá²á·ááá¯á·áá±á¬ áá±á¬á·ááᯠááŸáááºáá«áááºá ááŒá®ážááẠá
á¬ááŒá±á¬ááºážáá±ážáá±á«áºáá¬áááºá
kvim2#
áá« command ááá¯ááá¯ááºááá·áºáá«
kvim2# run update
áá»áœááºá¯ááºááá¯á·áááºáá±ááá·áº host ááœááºá áá»áœááºá¯ááºáá¯ááºáá±á¬ááºáááº-
burn-tool -v aml -b VIM2 -i VIM2_Ubuntu-server-bionic_Linux-4.9_arm64_EMMC_V20191231.img
áá«áá² áá®ážá áá«á á áºáá±ážáááºá áá¯ááºáá±á«áºááŸá¬ Linux ááŸááááºá á¡áá±á¬áá·áºáááº/á áá¬ážááŸáẠkhadas:khadasá
áááºážáá±á¬ááºá á¡áá»áá¯á·áá±á¬á¡áá±ážá á¬áž áááŠážáááºáááºáá»á¬ážá áá±á¬ááºáááºá¡áá¯ááºá¡ááœááºá sudo á¡ááœáẠá áá¬ážááŸááºááᯠááááºááá¯ááºááẠ(áá¯ááºáá«áááºá ááá¯á¶ááŒá¯á¶áá±ááá·áº á¡áááºááŒá±áá«áááº)á
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
á¡áááºá¡áá²ááœá±á·ááẠáá®áá¯ááºááᯠááá¯á¶ážáá«áá²á· Raspberry Pi á ááá¯áá±á¬ááºážáá«áááºá ááá¯ážááá¯ážáá¬ážáá¬ážá
ááá¯ááẠHuawei e3372h â 153
á€ááá¯áááºááẠáá»áœááºá¯ááºá¡ááœáẠá¡áá±ážáá«áá±á¬ ááœá±ážáááºážááŒá áºááŒá áºááŒá®ážá á¡ááŸááºááŸá¬á áááºážááẠááá±á¬áá»ááºáá áºáá¯áá¯á¶ážá ááááºááá¯á·ááŸá¯ááŒá áºáá¬áá²á·áááºá áá±áá°áá»á¡á¬ážááŒáá·áºá á€á ááºáá á¹á ááºážáá»á¬ážá¡ááœáẠ"ááá¯áááº" áá°áá±á¬á¡áááºááẠá¡áá¯ááºáá¡ááŸá áºáá¬áááᯠáá¯á¶ážááááºáááºááŒááºážáááŸááá«- áááºážááẠá¡á¬ážáá±á¬ááºážáá±á¬áá±á«ááºážá ááºááŸá¯ááŒá áºááŒá®ážá á€áá¬á·ááºáá²á¡á áááºá¡ááá¯ááºážááẠáááá¯ááºáá¬áá»á¬ážáááºáááºáááºá¡ááœáẠCD-ROM áá²á·ááá¯á·áááºáá±á¬ááºááá·áºáá±á«ááºážá ááºáááááá¬áá áºáá¯áá«ááŸááááºá ááá¯á·áá±á¬áẠááœááºáááºáááºáá¯ááºááá¯á· ááŒá±á¬ááºážáááºá
áááá¯áá¬á¡áá Linux á¡áá¯á¶ážááŒá¯áá°áá¡ááŒááºá¡áá áááºáááºáá»á¬ážá¡á¬ážáá¯á¶ážááá¯ááŒá®ážáá±á¬ááºá áááºážáááºá€áá¯á¶áá±á«ááºáááº- modem ááá¯áá»áááºáááºááŒá®ážáá±á¬ááºá dhcp ááŸáá áºááá·áº IP ááááºá ᬠ192.168.8.100 ááŸáá·áº default gateway ááá¯áááŸáááá·áº eth* network interface áá áºáá¯ááŸááááºá 192.168.8.1 ááŒá áºáá«áááºá
ááŒá®ážáá±á¬á· á¡áá±ážááŒá®ážáá¯á¶ážá¡áá»áááºá á€ááá¯áááºáá±á¬áºáááºááẠAT á¡áááá·áºáá»á¬ážááŒáá·áº ááááºážáá»á¯ááºáá¬ážááá·áº ááá¯áááºáá¯ááºááœáẠá¡áá¯ááºáá¯ááºááááá«á. á¡áá¬á¡á¬ážáá¯á¶ážááá¯ááá¯ááá¯ážááŸááºážáááºááŒá áºááŒá®ážá ááá¯áááºáá áºáá¯á á®á¡ááœáẠPPP áá»áááºáááºááŸá¯áá»á¬ážááᯠáááºáá®ážááŒá®ážáá±á¬áẠáááºážááá¯á·ááŸáá·áºá¡áá° áá¯ááºáá±á¬ááºáá«á ááá¯á·áá±á¬áº áá»áœááºá¯ááºáááá á¹á ááœááºá "ááá¯ááºááá¯ááº" (ááá¯ááááá»áááºááŸá¬á udev á ááºážáá»ááºážáá»á¬ážááŸáá·áºá¡áá® Linux diver) ááẠeth interface ááá¯áááºáá®ážááŒá®áž dhcp ááŸáá áºááá·áº IP ááááºá á¬áá áºáá¯áááºááŸááºáá±ážáááºá
áá±á¬ááºááẠááŸá¯ááºááœá±ážááŸá¯áá»á¬ážááᯠááŸá±á¬ááºááŸá¬ážáááºá "ááá¯áááº" áá°áá±á¬ á
áá¬ážáá¯á¶ážááᯠáá±á·áá¬ážááŒá®áž ááœááºáááºáááºááŸáá·áº ááááºáá±ážááᯠáá±á·áá¬ážááẠá¡ááŒá¶ááŒá¯ááá¯áááºá á¡ááŒá±á¬ááºážááŸá¬ á¡ááŸá
áºáá¬áá¡á¬ážááŒáá·áºá áááºážááẠááœááºáááºáááºá¡áá
áºáá
áºáá¯ááᯠááááºáá±ážáá
áºáá¯ááŸáá·áº áá»áááºáááºáá¬ážááá²á·ááá¯á· ááŒá
áºáá±áá±á¬ááŒá±á¬áá·áº ááŒá
áºáááºá
ááá¯áááºáá
áºáá¯ááŸááá±á¬á¡áá«á áááºážááẠá¡áá°ážááŒá¿áá¬áá»á¬ážááᯠáááŒá
áºá
á±áá²á áá
áºáá¯áááºááá¯áá±á¬á¡áááºááŸá¬ n-pieces ááŸááá«áá á¡á±á¬ááºáá«ááœááºáááºáá¯á¶áá±á«áºáá¬áááºá
ááá¯ááá¯áááºááŸá¬á áá°áá®áá±á¬ IP ááááºá
á¬ááŒáá·áº ááœááºáááºáááºáá»á¬ážá áá
áºáá¯á
á®ááẠáá°áá®áá±á¬ default gateway ááŸááááºá ááá¯á·áá±á¬áº á¡ááŸááºááááºáá±á¬á· áááºážááá¯á·áá
áºáŠážá
á®ááẠáááºážáááá¯ááºááá¯ááºá¡á±á¬áºááá±áá¬ááŸáá·áº áá»áááºáááºáá¬ážáááºá
á¡á ááá¯ááºážááœááºá áá»áœááºá¯ááºááœáẠááá¯ážááŸááºážáá±á¬ááŒá±ááŸááºážáá»ááºáá áºáá¯ááŸááááº- ifconfig ááá¯á·ááá¯áẠip command ááá¯á¡áá¯á¶ážááŒá¯á á¡ááºáá¬áá±á·á áºá¡á¬ážáá¯á¶ážááá¯ááááºáᬠáá áºáá¯áááºážááá¯ááœáá·áºááŒá®áž á ááºážáááºáá«á á¡ááŒá±á¬ááºážá¡ááœáŸá±á·á¡ááá¯ááºá¡ááá·áºááœáẠáá»áœááºá¯ááºááẠá ááºááá¯á· áá»áááºáááºááááá±á¬á·ááŒááºážááŸááá«áž ááŒá±ááŸááºážáá»ááºááẠáá°ááá¯ááºážá¡ááœáẠáá±á¬ááºážááœááºáá«áááºá á¡ááŒá±á¬ááºážá¡áá²á áááŒá¬áááá²á· ááŒááºáá¬ááŒá±á¬áá·áºá áá»áœááºáá±á¬áº áá»áááºáááºááá¯á· áá¯á¶ážá á¡ááœáá·áºá¡áá±áž áááŸááá²á·áá«áá°ážá
ááá¯á·ááŒá±á¬áá·áºá áá»áœááºá¯ááºááẠááá¯áááºáá»á¬ážá IP ááááºá á¬áá»á¬ážááᯠááá¯ááºááá¯ááºááŒá±á¬ááºážáá²ááŒá®ážáá±á¬áẠáááºážááŒá±á¬ááºážáááºáááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á á¡ááœá¬ážá¡áá¬ááᯠáá±á¬ááºážááŸááºááẠáááºážááŒá±á¬ááºážááᯠááœá±ážáá»ááºáá²á·áááºá
áááºážááẠáá»áœááºá¯ááºá modems ááŒá¿áá¬áá»á¬ážá á¡áá¯á¶ážááá¯ááºáá±ážáá«á áá«áá«ááŒá¿áá¬áá»á¬ážááŸááá»áŸáẠáááºážááá¯á·ááẠááŒá¯ááºáá»ááŒá®áž USB hub ááá¯á· áá±á¬ááºážááœááºáá±á¬ áááºááŒáááºáá±á¬ áá«áá«áá±á¬ááºáá¶á·ááŸá¯ ááá¯á¡ááºáá«áááºá hub ááá¯á· áá«áá«ááᯠááá¯ááºááá¯áẠááá±áá±á¬áºááŒááºážááŒáá·áº á€ááŒá¿áá¬ááᯠááŒá±ááŸááºážáá²á·áááºá ááá±á¬áá»ááºáá
áºáá¯áá¯á¶ážááᯠáá»ááºáá®ážá
á±ááá·áº áá±á¬ááºáááºááŒá¿áá¬áá
áºáá¯- á
ááºááᯠááŒááºáááºá
áááºááŒááºáž ááá¯á·ááá¯áẠá¡á¡á±ážáá¶ááŒá®ážáá±á¬ááºá ááá¯áááºá¡á¬ážáá¯á¶ážááẠá¡ááŒá²áááºážááá¯ááºááŒá±á¬ááºáž ááœá±á·ááŸááá²á·áááŒá®áž áááºážááẠá¡áááºááŒá±á¬áá·áºááŒá
áºáááá·áº á¡ááŒá±á¬ááºážáááºážááŸáá·áº áááºááá·áº á¡ááºáááá¯áá®áááºááŒá±á¬áá·áº ááŒá
áºáááºááᯠáá»áœááºá¯ááºááá¯á¶ážááŒááºááá¯ááºáá«á áá«áá±ááá·áº á¡áááºá¡áá¬ááœá±ááᯠá¡áááºáá¯ááºáá«á
modem ááŸááºáááºá áœá¬á¡áá¯ááºáá¯ááºáááºá¡ááœáẠusb-modeswitch package ááᯠááá·áºááœááºážáá²á·áááºá
sudo apt update
sudo apt install -y usb-modeswitch
ááá¯á·áá±á¬áẠáá»áááºáááºááŒá®ážáá±á¬ááºá ááá¯áááºááᯠudev á
áá
áºááœá²á០ááŸááºáááºá
áœá¬ ááŸá¬ááœá±ááœá±á·ááŸáááŒá®áž ááŒááºáááºáááºááŸááºáá±ážáááºááŒá
áºáááºá ááá¯áááºááᯠáá»áááºáááºááŒá®áž ááœááºáááºáá±á«áºáá¬ááŒá±á¬ááºáž áá±áá»á¬á
á±ááŒááºážááŒáá·áº áá»áœááºá¯ááºá
á
áºáá±ážáá«áááºá
áá«áááŒá±ááŸááºážááá¯ááºáá±á¬ áá±á¬ááºáááºááŒá¿áá¬áá
áºáá¯- á€ááá¯áááºá០áá»áœááºá¯ááºááá¯á·áá¯ááºáá±á¬ááºáá±áá±á¬ á¡á±á¬áºááá±áá¬á¡áááºááᯠáááºááá¯á·áááá¯ááºáááºáááºážá á¡á±á¬áºááá±áá¬á¡áááºááᯠ192.168.8.1 ááœáẠmodem web interface ááœááºáá«ááŸááááºá áááºážááẠAjax áá±á¬ááºážááá¯ááŸá¯áá»á¬ážááŸáá
áºááá·áº áá±áá¬áááºáá¶áááŸáááá·áº áááºááŒáœáá±á¬áááºá
á¬áá»ááºááŸá¬áá
áºáá¯ááŒá
áºáá±á¬ááŒá±á¬áá·áº á
á¬áá»ááºááŸá¬ááᯠáá±á¬ááºááŸá¯ááºááŒá®áž á¡áááºááᯠááœá²ááŒááºážá
áááºááŒá¬áá¯á¶ááŒáá·áº á¡áá¯ááºáááŒá
áºáá«á áá«ááŒá±á¬áá·áº áááºá
á¬áá»ááºááŸá¬ááᯠáááºááá¯áááºáá±á¬ááºáááá²ááá¯áᬠá
á¥áºážá
á¬ážááŒáá·áºáá±á¬á· á¡áááá¹áá¬ááºáá
áºáá»áá¯ážáá»áá¯áž áá¯ááºáá±áááºááá¯áᬠááá±á¬áá±á«ááºáá¬áááºá ááááºá¡áá±ááŒáá·áº áá°ááẠáá¶ááœá±ážááœá±ážááŒá®áž á¡á±á¬áºááá±áá¬ááẠSpeedtest API ááá¯ááºááá¯ááºááᯠá¡áá¯á¶ážááŒá¯á áááºáá¶áá¬áááºá
modem ááẠAT commands áá»á¬ážááŸáá áºááá·áº áááºáá±á¬ááºá¡áá¯á¶ážááŒá¯áá«á áá»á¬ážá áœá¬ááœááºáá°áááºááŒá áºáááºá áááºážááᯠááŒááºáááºááŒááºáááºááŒááºážá ppp áá»áááºáááºááŸá¯áááºáá®ážááŒááºážá IP áá áºáá¯áááºááŸááºááŒááºážá áááºáá®ááœááºážá¡á±á¬áºááá±áá¬ááá°ááŒááºážá áááºááŒáá·áº ááŒá áºááá¯ááºáááºááŒá áºáááºá áá«áá±ááá·áº áá¶ááá±á¬ááºážá áœá¬áá²á áá«áá±ážáá²á·áá²á·á¡áá¬ááœá±áá²á· á¡áá¯ááºáá¯ááºáá±áááºá
GPS á áá áº
áá»áœááºá¯ááºáá±ážáá¬ážáá±á¬ GPS áááºáá¶áááááá¬ááœáẠUART áá»ááºááŸá¬ááŒááºááŸáá·áº áá«áá«áá«ááŸááááºá áááºážááẠá¡áá±á¬ááºážáá¯á¶ážááŒá±ááŸááºážáá»ááºááá¯ááºáá±á¬áºáááºáž áááºážááẠáá¯ááºáá±á¬ááºááá¯ááºáá±á¬ ááá¯ážááŸááºážáá²ááŒá áºáááºá áááºáá¶áá°ááẠá€áá²á·ááá¯á·ááŒáá·áºáááºá
ááá¯ážááá¯ážáá¬ážáá¬ážááŒá±á¬ááá»áŸááºá á€áááºááŸá¬ GPS áááºáá¶áááááá¬ááŸáá·áºááááá¯á¶ážá¡áá¯ááºáá¯ááºááŒááºážááŒá
áºáááºá ááá¯á·áá±á¬áºáá»áœááºá¯ááºáá»áŸá±á¬áºááá·áºáá¬ážááá·áºá¡ááá¯ááºážá á¡áá¬á¡á¬ážáá¯á¶ážáááºáá»áœááºá¯ááºááá¯á·á¡ááœááºá¡áá±á¬áºááŒá¬áá²á·ááŒá®ááŒá
áºáááºá áá«ááŒá±á¬áá·áº á¡áááºááá·áºáá¯ááºáá¬ážáá²á· ááŒá±ááŸááºážáááºážááœá±ááá¯áá² áá¯á¶ážáá«áááºá
ááááŠážá áœá¬ GPS áá»áááºáááºááẠuart_AO_B (UART_RX_AO_Bá UART_TX_AO_B) ááá¯ááœáá·áºáá«á
khadas@Khadas:~$ sudo fdtput -t s /dtb.img /serial@c81004e0 status okay
ááá¯á·áá±á¬áẠááœá²á áááºááŸá¯á á¡á±á¬ááºááŒááºááŸá¯ááᯠá á áºáá±ážáá«áááºá
khadas@Khadas:~$ fdtget /dtb.img /serial@c81004e0 status
okay
ဠcommand ááẠá¡ááœááºá¡áááºááŒá±ááá·áº devtree ááᯠáá»á¶áááºážáá±á áẠáááºážááŒááºáá±ážáá¯á¶ááááºá
á€áá¯ááºáá±á¬ááºáá»ááºá¡á±á¬ááºááŒááºááŒá®ážáá±á¬ááºá GPS daemon ááᯠreboot áá¯ááºááŒá®áž install áá¯ááºáá«á
khadas@Khadas:~$ sudo reboot
GPS daemon ááá¯ááá·áºááœááºážááŒááºážá áá»áœááºá¯ááºááẠá¡áá¬á¡á¬ážáá¯á¶ážááᯠááá·áºááœááºážááŒá®áž áá±á¬ááºáááºááœá²á·á ááºážáá¯á¶ááŒááºáááºááŸá¯á¡ááœáẠáááºážááᯠáá»ááºáá»ááºážááŒááºááá¯ááºáá«á
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
GPS áá»áááºáá¬ážááá·áº UART áá áºáá¯ááᯠáááºáááºáá±áá«áááºá
DEVICES="/dev/ttyS4"
ááŒá®ážááẠá¡áá¬á¡á¬ážáá¯á¶ážááá¯ááœáá·áºááŒá®áž á áááºááá¯ááºáá«á
/* GPS daemon enable/start */
sudo systemctl enable gpsd.socket
sudo systemctl start gpsd.socket
ááŒá®ážááẠGPS áá²á· áá»áááºááá¯ááºáá«á
GPS ááá¯ááºáá¬ááẠáá»áœááºá¯ááºáááºáá²ááœáẠááŸááá±ááŒá®áž UART á¡ááŸá¬ážááŸá¬ááœááºáá«áá¬ááŒáá¯ážáá»á¬ážááᯠáá»áœááºá¯ááºáááºáá»á±á¬ááºážáá»á¬ážá¡á±á¬ááºááœáẠááŒááºááá¯ááºáááºá
áá« reboot áá¯ááºááŒá®áž gpsmon áááá¯ááááºááá¯áá¯á¶ážááŒá®áž GPS áá¯ááºáá±á¬ááºáá»ááºááᯠá á áºáá±ážáá«á
á€áááºáá¬ážááŒááºáá¬ááºáá¯á¶ááœáẠááŒáá¯ááºáá¯áá»á¬ážááᯠáááºáááŒááºááá¯ááºáá±á¬áºáááºáž GPS áááºáá¶áá°ááŸáá·áº áááºááœááºááŸá¯ááᯠáááºááŒááºááá¯ááºááŒá®ážá ááá¯ááá¯áááºááŸá¬ á¡áá¬á¡á¬ážáá¯á¶áž á¡áááºááŒá±áá«áááºá
python ááœááºá ဠdaemon ááŸáá·áºá¡áá¯ááºáá¯ááºáááºááœá±ážáá»ááºá áá¬áá»á¬ážá áœá¬ááá¯áá»áœááºá¯ááºááŒáá¯ážá á¬ážáá²á·áá±á¬áºáááºáž 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 á áááºáá¶áááŸáááŸá¯ áá¶á·áá»ááºážááŒá®áž áá±áᬠá¡ááŒá²ááááŸááá¬ááŒá±á¬áá·áº áá«ááá¯áá¯ááºááá¯á· áá¯á¶ážááŒááºáá²á·áá«áááºá á¡áááºá áááºááẠáá±áá¬áááºáá¶ááá°ááẠá á±á¬áá·áºááá¯ááºážáá«áá á¡áááºá áááºááẠá¡áá±ážááááºážá¡áááºážááœáẠá¡áá¯ááºáá¯ááºáá«áá áááá¯ááááºááẠá€áá±áá¬ááœáẠá¡á±ážáá²ááœá¬ážáááºááŒá áºáááºá ááá¯á·ááŒá±á¬áá·áºá áá»áœááºá¯ááºááẠá€á¡ááá¯ááºá á¬ážááœá±ážáá»ááºááŸá¯ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáá²á·áááºá
áá°á¡áá á¡áá»áááºááá¯ááá»áŸáẠUART ááŸáá áºááá·áº GPS ááŸáá±áá¬ááᯠááá¯ááºááá¯ááºáááºáá¶áááŸááááºá áááºážááᯠáá®ážááŒá¬ážá á¬ááœá²áá áºáá¯á¡ááŒá Ạááœá²ááŒááºážá áááºááŒá¬ááŒá®áž áááºážááŸáá·áºáá¯ááºáá±á¬ááºááá¯ááºáááºááŒá áºáááºá áá«áá±ááá·áº á¡áá»áááºáá¯á¶ážááááŸááá±á¬á·áá²á·á¡ááœáẠáááºá ááºáá²á· áá¯ááºáá¶áá«áẠáá¯ááºáááºá áá«áááŸááºáá°ážá
á¡áááºážáá¯ááºááœáŸááºáá±á¬ diode
LED áá»áááºáááºááŒááºážááẠááá¯ážááŸááºážááŒá®áž áá áºáá»áááºáááºážááœáẠáááºáá²áááºá á¡áááá¡áááºá¡áá²ááŸá¬ á áá áºááŸá áááºáá¶áá«ááºááẠáá¯ááºáá±á«áºááŸá áááºáá¶áá«ááºááŸáá·áº áááºááá¯ááºááŒááºážáááŸáááá·áºá¡ááŒáẠá á¬ááœááºá á¬áááºážááᯠáááºáááºááŒáá·áºáá±ážáá¬ážáá±á¬ááŒá±á¬áá·áºááŒá áºáááºá OS ááŸá áá¬á·ááºáá² áááºáá¶áá«ááºááŸáá·áº áááºáá¶áá«ááºááᯠááŸáá¯ááºážááŸááºáááºá áááºááẠá¡áááá·áºááᯠáá¯ááºáá±á¬ááºááẠááá¯á¡ááºáááº-
gpio readall
á áá áºááœáẠáááºááá¯ážá á¬áá±ážá á¬áá°ááá¬ážááŸáá·áº áá¯ááºáá±á«áºááœáẠááŒááááºááŒá áºáááºá ááŒá®ážááẠOS ááŸá¬ pin ááᯠáááºáááºááá¯ááºáá«ááŒá®á áá«á·ááá á¹á ááœáẠLED ááŸáá·áºáá»áááºáááºáá¬ážáááºá GPIOH_5.
áá« GPIO áááºáá¶áá«ááºááᯠá¡ááœááºáá¯ááºááá¯á· ááŒá±á¬ááºážáááºá
gpio -g mode 421 out
áá¯áááᯠáá»áá±ážááá¯ááºáááºá
gpio -g write 421 0
áá áºáá¯áá±á¬á· áá»áá±ážááá¯ááºáááºá
gpio -g write 421 1
"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 ááẠááŸáá áœá¬ááŸáááºáá¯ááºáááá·áºáááºá
áá±á¬á·ááºáá²áá¯á¶ááŸááºáá»á¬áž
Speedtest API
speedtest.net áááºáá±á¬ááºááŸá¯ááœáẠáááºážáááá¯ááºááá¯áẠpython-API áá«ááŸááááºááᯠáááºááŒáá·áºááŸá¯ááá¯ááºááá·áºá¡ááœáẠáá»á¬ážá
áœá¬áááºážááŒá±á¬ááºáááá«áááºá
áá±á¬ááºážáá²á·á¡áá»ááºááá±á¬á· ááŒáá·áºááá¯á·ááá²á· á¡áááºážá¡ááŒá
áºáá¯ááºááœá± ááŸááááºá ဠAPI ááŸáá·áºá¡áá¯ááºáá¯ááºáá¯á¶ (ááá¯ážááŸááºážáá±á¬á¥ááá¬áá»á¬áž) ááœááºááœá±á·ááá¯ááºáááºá
á¡á±á¬ááºáá« command ááŒáá·áº python library ááᯠinstall áá¯ááºáá«á
sudo -H pip3 install speedtest-cli
á¥ááá¬á¡á¬ážááŒáá·áºá áááºááẠáá±á¬á·ááºáá²ááºá០Ubuntu ááœáẠspeed tester ááá¯ááẠááá·áºááœááºážááá¯ááºáááºá áááºážááẠáá°áá®áá±á¬ python á¡ááá®áá±ážááŸááºážááŒá áºááŒá®ážá ááá¯á·áá±á¬áẠconsole á០ááá¯ááºááá¯ááºááœáá·áºááá¯ááºáááºá
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"
#ÑÑÑ ÐžÐŽÐµÑ Ð·Ð°Ð¿ÐžÑÑ Ð² Ñайл лПгПв
á€ááœááºáááºáž á¡áá¬á¡á¬ážáá¯á¶ážááẠááá¯ážááŸááºážáááºááá¯ááºáá±á¬áºáááºážá áááºážááẠááá¯áááá¯ážááŸááºážáá¯á¶áá±á«ááºáááºá á¡á ááá¯ááºážááœááºá áá¬áá¬áá»á¬ážá ááá·áºáááºáá»ááºáá»á¬ážááẠáá°áá®áá²á·áááºá []á¡áá±á¬ááºážáá¯á¶áž áá¬áá¬ááᯠááœá±ážáá«ááá¯á· ááŒá±á¬ááŒáááºá ááááºá¡áá±ááŒáá·áº áá»áœááºá¯ááºááœáẠáá»áááºážáá¬áá¬áá»á¬áž ááŸáááŒá®áž áááºááá·áºááŸááºážááá·áºá¡ááá¯ááºážá ááŒá±á¬ááºážáá²ááá¯ááºáá±á¬ ááŒááºááŸá¯ááºážááŒá áºáááºá á€áááºááŸá¬ ááŸá¯ááºááœá±ážáá±á¬á¡ááŒá±á¬ááºážá¡áá¬ááŒá áºááŒá®ážá á¡áááºá áá¯á¶áá±áá¬áá¬ááᯠá¡áá¯á¶ážááŒá¯á áááºááŒáááºáá±á¬ ááá¯á·ááá¯áẠááœá±á·áá»á¬ážááŸá¯ááŸááá±á¬á áá¯áá±ááááŒá¯ááẠááá¯á¡ááºáááºá ááá¯á·áá±á¬áº á€áááºááŸá¬ á ááºážáááºáá¬áá¬áá áºáá¯ááŸáá·áº áááºááŒáááºá áœá¬áááºááŸááºáá¬ážáá±á¬áá áºáá¯ááᯠdynamically ááœá±ážáá±á¬á¡áá«ááœáẠBeeline á¡á±á¬áºááá±áá¬á¡ááœáẠá¡ááŒááºááŸá¯ááºážááá¯ááºážáá¬ááŒááºážááááºáá»á¬áž á¥ááá¬áá áºáá¯ááŒá áºáááºá
ááá¯ááºážááá
áºáá¬áá¬ááᯠááœá±ážáá»ááºáá±á¬á¡áá« ááŒááºááŸá¯ááºážááá¯ááºážáá¬ááŒááºážáááááºá
áááá»á
áœá¬ááœá±ážáá»ááºáá¬ážáá±á¬ áá¬áá¬áá
áºáá¯ááŸáá·áºá¡áá° ááŒááºááŸá¯ááºážá
ááºážáááºááŒááºážáááááºá
á
ááºážáááºáá±á
ááºá áá±áá¬ááŸá
áºáá¯áá¯á¶ážááœáẠâáá¬ážááœá±ážâ ááŸáááŒá®áž áááºážááᯠáááºá¹áá»á¬áááºážáá»á¬ážááŒáá·áº áááºááŸá¬ážááẠááá¯á¡ááºáááºá ááá¯á·áá±á¬áº áá¯á¶áá±áá¬áá¬áá
áºáá¯ááŒáá·áº áááºážááẠá¡áááºážáááºáááºážááŒá®áž ááá¬áááẠááá¯ááá¯áááºááŒáááºáááºá
áá±áá°áá»á¡á¬ážááŒáá·áºá á€áá±áá¬ááẠááŒá®ážáá¬ážáá±á¬ áá¯áá±ááááŒá¯áá¬áá±áá¬ááŒá
áºáááºá iperf utility ááᯠá¡áá¯á¶ážááŒá¯á áá»áœááºá¯ááºááá¬áá¬áá¡ááŒááºááŸá¯ááºážááᯠááá¯ááºážáá¬áá«áááºá áá«áá±ááá·áº áááºážááá¬ááá¯ááºážááá¯ááºáᬠáááºááŸááºáá»ááºááœá±ááᯠááá¯ááºáá¬áááºá
á á¬ááá¯á·ááŒááºážááŸáá·áºá¡ááŸá¬ážáá»á¬áž
áá±ážááºááá¯á·áááºá ááœá±ážáá»ááºá
áᬠáá«áááºáá»á¬ážá
áœá¬ááᯠááŒáá¯ážá
á¬ážáá²á·áá±á¬áºáááºáž áá±á¬ááºáá¯á¶ážááœáẠá¡á±á¬ááºáá«ááá¯á·ááᯠááŒá±ááŸááºážáá²á·áááºá áá»áœááºáá±á¬áº Yandex ááŸá¬ á
á¬ááá¯ááºáá¯á¶ážáá
áºáá¯ááᯠááŸááºáá¯á¶áááºááŒá®áž áá°ááá¯ááºáááºá
ááŸááºáááºážáá»á¬ážááᯠá¡áá»áááºááá¬ážá¡ááá¯ááºáž áá±ážááá¯á·áá²á·ááŒá±á¬ááºážá áá»áááºáááºááŸá¯ááŸááá»áŸááº6 áá¬áá®ááá¯ááºáž- áááẠ00 áá¬áá®á 06 áá¬áá® ááŸáá·áº 12 áá¬áá®á á¡á±á¬ááºáá«á¡ááá¯ááºáž áá±ážááá¯á·áá²á·áá«áááºá
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 á¡ááœáẠáá»áœááºáá±á¬áºááœá±ážáá»ááºáá²á·áá«áááºá
áá¬á·ááºáá²ááŸáá·áº áááºááœááºááŸá¯áááºážáááºážáá
áºáá¯á¡áá±ááŒáá·áº vim2 ááẠááŒá±á¬ááºážááŒáẠssh áá»áááºáááºááŸá¯ááᯠááœá±ážáá»ááºáá²á·ááŒá®áž áááºááœá±á·ááŒááá¬ážááá·áºá¡ááá¯ááºáž áááºážááẠá¡áá±á¬ááºážáá¯á¶ážááá¯ááºáá±á áá»áááºáááºááŸá¯ áá»á±á¬ááºáá¯á¶ážáá«áá áá¬áá¬ááẠááááºáááºážááᯠááá¯ááºáá±á¬ááºáá¬ážááŒá®áž áááºážááᯠá¡áá»áááºá¡áááºááŒá¬ áá»áááºáááºááẠáááŒá
áºááá¯ááºáá±á ááá¯á·ááŒá±á¬áá·áº á¡ááŒá¬ážáááºááœááºáá±ážáááºážáááºážáá»á¬áž á¥ááᬠVPN ááá¯áá¯á¶ážááŒááºážááẠááá¯áá±á¬ááºážáá±ážáááºá á¡áá¬áááºááœáẠáá»áœááºá¯ááºááẠVPN ááá¯á·ááŒá±á¬ááºážáá»ááºáá±á¬áºáááºáž á¡áá»áááºáááá«á
Firewall áá áºáá¯áááºáá±á¬ááºááŒááºážá áááá¯ááºááœáá·áºáá»á¬ážááá¯ááá·áºáááºááŒááºážá root ssh áá»áááºáááºááŸá¯áá»á¬ážááá¯ááááºáá¬ážááŒááºážááŸáá·áº VPS áá áºáá¯áááºáá±á¬ááºááŒááºážááá¯ááºáá¬á¡ááŒá¬ážáá±á¬á¡ááŸááºááá¬ážáá»á¬ážáá¡áá±ážá áááºá¡áá»ááºá¡áááºáá»á¬ážááá¯áá»áœááºá¯ááºááá«áááºáá«á á¡á¬ážáá¯á¶ážááááŒá®ážáá¬ážááŒá áºáááºááá¯á· áá¯á¶ááŒááºáá»ááºáá«áááºá á¡áá±ážááŸáá»áááºáááºááŸá¯á¡ááœááºá áá»áœááºá¯ááºááẠáá¬áá¬áá±á«áºááœáẠá¡áá¯á¶ážááŒá¯áá°á¡áá áºááᯠáááºáá®ážáá«áááºá
adduser vimssh
áá»áœááºá¯ááºááá¯á·á hardware ááœáẠssh áá»áááºáááºááŸá¯áá®ážáá»á¬ážááᯠáá»áœááºá¯ááºáá¯ááºáá¯ááºáá«áááºá
ssh-keygen
ááŒá®ážáá±á¬á· áá°ááá¯á·ááᯠáá»áœááºáá±á¬áºááá¯á· áá¬áá¬ááŸá¬ áá°ážáá°áá«áááºá
ssh-copy-id [email protected]
áá»áœááºá¯ááºááá¯á·á áá¬á·ááºáá²ááœááºá áá»áœááºá¯ááºááẠbootááá¯ááºážááœáẠá¡ááá¯á¡áá»á±á¬ááºááŒá±á¬ááºážááŒáẠ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
port 8083 ááᯠá¡á¬áá¯á¶á áá¯ááºáá«- reverse ssh ááŸáááá·áº áá»áááºáááºááẠáááºááá·áº port ááᯠá¡áá¯á¶ážááŒá¯áááºááᯠáá¯á¶ážááŒááºáááºá áááºážááᯠstartup ááœááºááá·áºááŒá®áž á áááºáá«á
sudo systemctl enable autossh.service
sudo systemctl start autossh.service
á¡ááŒá±á¡áá±ááá¯ááẠáááºááŒááºááá¯ááºáááº-
sudo systemctl status autossh.service
ááá¯áá»áœááºá¯ááºááá¯á·á VPS áá¬áá¬ááœááºá áá»áœááºá¯ááºááá¯á· run áá«áá
ssh -p 8083 khadas@localhost
ááá¯á·áá±á¬áẠáá»áœááºá¯ááºááẠáá»áœááºá¯ááºá á ááºážááẠhardware á¡ááá¯ááºážááá¯á· áá±á¬ááºáá«áááºá ááŒá®ážáá±á¬á· áá¬á·ááºáá²ááá± ááŸááºáááºážááœá±áá²á· ssh ááá áºááá·áº áá±áá¬ááŸááºááá»áŸááᯠáá«á·áá¬áá¬áá® ááá¯á·ááá¯ááºáááºá á¡á²áá«á á¡áááºážá¡áááºááŒá±áááºá
á¡á¬ážáá¯á¶ážááᯠáá±á«ááºážááá·áºááá¯ááºáá«á
ááœáá·áºáá±áááºá ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááŸáá·áº á¡ááŸá¬ážááŸá¬ááŒááºááŒááºážááᯠá
áááºááŒáá«á
áá¯á·
áá°ážá áá«áá²á áá« node á¡á¬ážáá¯á¶ážááᯠáá±á¬áºááŒáá²á·áááºá á¡áá¯á á¡á¬ážáá¯á¶ážáá±á«ááºážááá¯á· á¡áá»áááºáááºááŒá®á áá¯ááºááᯠááŒáá·áºááá¯ááºáá«áááºá
áá¯ááºáá«áá±á¬ á¡áá±ážááŒá®ážáá±á¬á¡áá»ááº- á€ááá±á¬áá»ááºááẠáááá»áá±á¬áá¯ááºáá±á¬ááºá áá¬áá áºáá¯á¡ááœáẠá¡á¶áááºááœááºáá»ááŒá áºá á±áá±á¬ááŒá±á¬áá·áºá á€ááá±á¬áá»ááºááẠá€áá²á·ááá¯á·áá áááºááá¯ááºáá«á áá»áœááºá¯ááºááẠá¡áááºážá¡ááŒá áºáá¯ááºááᯠáá±ážáá±á¬áºáááºážá á€áá±áá¬ááœáẠáááºááá¯ážá¡ááŸááá¯á¶ážá¡áá¬áá»á¬ážááᯠá á¬áá¬ážááŒáá·áº ááŸááºážááŒáá±áá±ážáááºá ááá¯á·ááá¯ááºáá«á áááºážááẠáá¯á¶ážááá¬ážááááºááá¯ááºáá«á
á¡á ááœááºá áá»áœááºá¯ááºááẠ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)
á€ááá±á¬áá»ááºá á¡áááºáá²áá¯á¶ážá¡ááá¯ááºážááŸá¬ á ááºážáááºááŸá¯áá áºáá¯á á®á¡ááœáẠreverse ssh áá»áááºáááºááŸá¯ááᯠááááºážááááºážááŒááºážááŒá áºáááºá á ááºážáááºááŸá¯áá áºáá¯á á®ááœáẠdefault gateway ááŸáá·áº DNS server ááᯠááŒááºáááºááŒááºáááºááŒááºáž áá«áááºáááºá áááºáá°áá០á á¬ááááºáá°ážááá¯áá±á¬á· ááá¬ážá áá áºáá¬ážáá¶áááºážáá±á«áºááŸá¬ áá á®ážáá°ážááá¯áᬠáááá¬ážáá«á á¡á®á áá¬á¥ááá¯ááŸá¬ááœá±á·áá°ááá¯ááºáž áááŒá¬ážáá¯á¶ážá¡áá»áá¯á·ááááá·áºáááºá
áá«ááá¯áá¯ááºááá¯á·á áá®ážááŒá¬ážáááºážááŒá±á¬ááºážááŒááá¬áž -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
á á¬áááºážááá¯áááºáá¶áááŸáááŒá®ážáá±á¬ááºá áá»áœááºá¯ááºááẠmodem ááŸáá·áºáááºáááºááá·áºá¡áááºážááœááºáá¯á¶ááœááºááŒáá¬ážááá·áºá¡ááá¯ááºážá¡ááºáá¬áá±á·á áºá¡á¬ážáá¯á¶ážááœáẠ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")
ááá¯á·áá±á¬áẠáá»áœááºáá±á¬áºááẠááœááºážáááºáá áºáá¯á á®ááœáẠá¡ááºáá¬áá±á·á áºáá áºáá¯á á®ááᯠááŒááºááœá¬ážáá¯á¶áá¬ááŒá áºáááºá ááŒá®ážáá±á¬á· interface áá áºáá¯á á®ááᯠáá»áœááºáá±á¬áº configure áá¯ááºáá«áááºá
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 áááºážááŒá±á¬ááºážáááºááŸááºááŒááºáž (ááá¯ááºáá±á¬ááºááá±ážáá«á) á¡ááŸá¬ážáá»á¬ážááᯠáá¬áá¬ááá¯á· áá±ážááá¯á·áá«á ááŸááºáááºážáá»á¬ážáá±ážááá¯á·ááŒá®áž áá±á¬ááºáá¯á¶ážááœáẠspeedtest ááá¯áá¯ááºáá±á¬ááºááŒá®áž ááŸááºáááºážáá»á¬ážááᯠ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()
#О Ўалее ÑеÑÑОÑÑеЌ ÑкПÑПÑÑÑ Ðž ÑПÑ
ÑаМÑеЌ лПгО.
reverse 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
ááᯠcommand ááᯠá¡áá¯á¶ážááŒá¯á ááŒá áºáá»ááºáá±ááá·áº ááŸááºáááºážáá»á¬ážááᯠáá»áœááºá¯áẠááŒááºááá¯ááºáááº-
journalctl -u modems_speedtest.service --no-pager -f
ááááºáá»á¬ážááá¯
áá² á¡áá±ážááŒá®ážáá¯á¶ážá ááááºá áá¬ááŒá áºááœá¬ážáá¬áá²á á€áááºááŸá¬ ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááŸáá·áº á¡ááŸá¬ážááŸá¬ááŒááºááŒááºážáá¯ááºáááºážá ááºá¡ááœááºáž áá«áááºážáá°ááá¯ááºáá²á·áá±á¬ ááááºá¡áá»áá¯á·ááŒá áºáááºá ááááºáá»á¬ážááᯠá¡á±á¬ááºáá« script ááŒáá·áº 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 á¡á±á¬áºááá±áá¬áá²á· á¡áá° áááºá¡áá±á¬áºááŒá¬á¡á±á¬áẠáá±á¬ááºááœááºáá²á·áᬠááŒá áºáá«áááºá
á€áá±áá¬ááœáẠáá»áœááºá¯ááºááẠááá¯ááºážááá
áºááá¯ááºážáá¬ááŒááºážáá¬áá¬ááᯠá¡áá¯á¶ážááŒá¯áá²á·áááºá ááŒááºááŸá¯ááºážááá¯ááºážáá¬ááŸá¯áá»á¬ážááẠá¡áá¯ááºááŒá
áºáá±á¬áºáááºáž á¡ááœááºá¡áááºá¡áá»ááŒá
áºáá±á¬áºáááºáž á¡áá»áá¯á·áá±á¬ áá»ááºážáá»áŸáááºááá¯ážááᯠááŒááºááá¯ááºáá²ááŒá
áºááŒá®ážá á¥ááá¬á¡á¬ážááŒáá·áº ááœá±á·áá»á¬ážáá±áá±á¬ áá»ááºážáá»áŸá¡á¬ážááŒáá·áº áá±áá¬ááᯠá
á
áºáá¯ááºááŒááºážááŒáá·áº áááºážááᯠááá°ááá¯ááºáááºá
áá±á¬ááºááá¯ááºážááœáẠá¡ááŒá¬ážáá±á¬ áááºáá®ááœááºážá¡á±á¬áºááá±áá¬áá»á¬ážá¡ááœáẠááááºáá áºáá»á¬ážá áœá¬ááᯠáááºáá®ážáá²á·áááºá á€ááá á¹á ááœááºá á ááºážáááºááŒááºážáá¬áá¬áá áºáá¯ááŸááá±ááŒá®ááŒá áºááŒá®áž ááááºáá»á¬ážáááºáááºáž á¡ááœááºá áááºáááºá á¬ážá áá¬áá±á¬ááºážáá«áááºá
áááºááœá±á·ááŒááºáááá·áºá¡ááá¯ááºážá áá±á«ááºážá
ááºááẠá€áá±áá¬ááᯠáá¯áá±ááááŒá¯ááŒááºážááŸáá·áº áá¯ááºáá±á¬ááºááŒááºážá¡ááœáẠá¡ááœááºáá»ááºáááºážááŒá®áž á¡áá¯ááºá áááºááá¹ááááºááŸá
áºáááºá¡áá ááŸááºážááŸááºážáááºážáááºáž áááŸááá«á áá«áá±ááá·áºâŠ
á¡áá¯ááºáááááº
áá»áœááºá¯ááºáááááºážáá»á¯ááºááŸá¯áááºáá»á±á¬áºááœááºáá±á¬á¡ááŒá±á¡áá±áá»á¬ážááŒá±á¬áá·áº á¡áá¯ááºáá¯ááºááááºááŒá®ážá á®ážááœá¬ážáá²á·áá«áááºá á€ááá±á¬áá»ááºá á¡á¬ážáááºážáá»ááºáá»á¬ážáá²ááŸáá áºáá¯ááŸá¬ áá»áœááºá¯ááºááá¯áá¹áááááá¹áá¬ááºá¡ááŒááºá¡áá á¡ááŒá¬ážááá¯áááºáá»á¬ážááŸáá·áº áá áºááŒáá¯ááºááẠá¡áá¯ááºááá¯ááºááá¯áá±á¬ ááá¯áááºááŒá áºááŒá®áž áááºážááᯠáááºááá·áºá¡áá«ááá¯ááºáž ááá¯ááá¯á·áá±á¬ááŸáá·áºááœááºáá»á¬ážááᯠááŒá¯áá¯ááºááŒááºážááŒá áºáááºá á€áááºááœááºáá»ááºáá»á¬ážá¡ááœááºá á¡ááŒá¬áž modem áá±á¬áºáááºáá»á¬ážá¡áá»á¬ážá¡ááŒá¬ážááŸááá«áááº; á¡áá»á¬ážá¡á¬ážááŒáá·áºáááºážááá¯á·ááẠMini PCI-e áá±á¬áºáááºááœááºááŸáááŒá®ážááŒá áºááŒá®ážá á ááºá¡ááœááºážááœááºááá·áºááœááºážáá¬ážááŒá®áž configure áá¯ááºáááºááá¯ááá¯ááœááºáá°áááºá áá«áá±ááá·áº á¡á²áá«á áá¯á¶ážáááŒá¬ážáá¬ážáá²á· áá¬ááºáááºážáá«á áá®ááá±á¬áá»ááºá á áááºáááºá á¬ážá áá¬áá±á¬ááºážááŒá®áž áá«áááºááœáá·áºáááá¯á· á¡áááºážáááºážáá¬áááá«áááºá
source: www.habr.com