ΠΠ° ΠΊΠ°ΡΠ°Π½ΡΠΈΠ½Π΅ ΠΌΠ½Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ»ΠΈ ΠΏΠΎΡΡΠ°ΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΊΠΎΡΠΎΡΡΠΈ LTE-ΠΌΠΎΠ΄Π΅ΠΌΠΎΠ² Π΄Π»Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΡΠΎΡΠΎΠ²ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ.
ΠΠ°ΠΊΠ°Π·ΡΠΈΠΊ Ρ ΠΎΡΠ΅Π» ΠΎΡΠ΅Π½ΠΈΡΡ ΡΠΊΠΎΡΠΎΡΡΡ Π²ΡΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΡΠ²ΡΠ·ΠΈ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π³Π΅ΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΎΡΠΊΠ°Ρ , Π΄Π»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΠΎΡΠΎΠ²ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ Π΅ΠΌΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡΠΈΠΌΠ°Π»Π΅Π½ ΠΏΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π΅ LTE-ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ Π²ΠΈΠ΄Π΅ΠΎΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΉ. ΠΡΠΈ ΡΡΠΎΠΌ Π·Π°Π΄Π°ΡΡ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠ΅ΡΠΈΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΈ Π΄Π΅ΡΠ΅Π²ΠΎ, Π±Π΅Π· Π΄ΠΎΡΠΎΠ³ΠΎΡΡΠΎΡΡΠ΅Π³ΠΎ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ.
Π‘ΡΠ°Π·Ρ ΡΠΊΠ°ΠΆΡ, ΡΡΠΎ Π·Π°Π΄Π°ΡΠ° Π½Π΅ ΡΠ°ΠΌΠ°Ρ ΠΏΡΠΎΡΡΠ°Ρ ΠΈ Π½Π°ΡΠΊΠΎΠ΅ΠΌΠΊΠ°Ρ, ΡΠ°ΡΡΠΊΠ°ΠΆΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΠ½Π΅ Π²ΡΡΡΠ΅ΡΠΈΠ»ΠΈΡΡ ΠΈ ΠΊΠ°ΠΊ Ρ ΠΈΡ
ΡΠ΅ΡΠ°Π». ΠΡΠ°ΠΊ, ΠΏΠΎΠ΅Ρ
Π°Π»ΠΈ.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅
ΠΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠΎΡΠΎΡΡΠΈ LTE-ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π΄Π΅Π»ΠΎ Π²Π΅ΡΡΠΌΠ° ΡΠ»ΠΎΠΆΠ½ΠΎΠ΅: Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ, ΡΠ°ΠΊΠΆΠ΅ Ρ ΠΎΡΠΎΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡ ΠΈ ΡΠ°Π±ΠΎΡΡ ΡΠΎΡΠΎΠ²ΠΎΠΉ ΡΠ΅ΡΠΈ. ΠΠ»ΡΡ Π½Π° ΡΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ΅Ρ Π²Π»ΠΈΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΊΡΠΎΡΠΎΠ²: ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π°Π±ΠΎΠ½Π΅Π½ΡΠΎΠ² Π½Π° ΡΠΎΡΠ΅, ΠΏΠΎΠ³ΠΎΠ΄Π½ΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ, Π΄Π°ΠΆΠ΅ ΠΎΡ ΡΠΎΡΡ ΠΊ ΡΠΎΡΠ΅ ΡΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΈΠ·-Π·Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ ΡΠ΅ΡΠΈ. Π ΠΎΠ±ΡΠ΅ΠΌ, ΡΡΠ° Π·Π°Π΄Π°ΡΠ° Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ , ΠΈ Π΅Π΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΠ²ΡΠ·ΠΈ.
ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π·Π°ΠΊΠ°Π·ΡΠΈΠΊ Ρ ΠΎΡΠ΅Π» ΠΏΡΠΎΡΡΠΎ Π³ΠΎΠ½ΡΡΡ ΠΊΡΡΡΠ΅ΡΠ° Ρ ΡΠ΅Π»Π΅ΡΠΎΠ½Π°ΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ², ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΡΠΌΠΎ Π½Π° ΡΠ΅Π»Π΅ΡΠΎΠ½Π΅ ΠΈ Π΄Π°Π»Π΅Π΅ Π² ΡΠ΅ΡΡΠ°Π΄ΠΊΡ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΊΠΎΡΠΎΡΡΠΈ. ΠΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΊΠΎΡΠΎΡΡΠΈ ΡΠ΅ΡΠ΅ΠΉ lte, Ρ ΠΎΡΡ Π½Π΅ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ, Π½ΠΎ ΡΠ΅ΡΠ°Π΅Ρ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ Π·Π°Π΄Π°ΡΡ.
ΠΠ·-Π·Π° Π½Π΅Ρ Π²Π°ΡΠΊΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π» ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π΅ Π² ΠΏΠΎΠ»ΡΠ·Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΈΠ»ΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ½ΠΎΡΡΠΈ, Π° Π² ΠΏΠΎΠ»ΡΠ·Ρ ΡΠΊΠΎΡΠΎΡΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π»ΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ ssh, Π²ΠΌΠ΅ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ½ΠΎΠ³ΠΎ vpn, ΡΠ°Π΄ΠΈ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΡ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅
ΠΠ°ΠΊ ΡΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΡΠ°ΡΡΠ΅
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ Π±ΡΠ»ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎΠ΅, Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΅Π³ΠΎ ΡΠ°ΡΡΠΈΡΡ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. ΠΡΠ±ΠΎΡ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΈ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ Π±ΡΠ» ΠΏΡΠΎΠ΄ΠΈΠΊΡΠΎΠ²Π°Π½ Π·Π°ΠΊΠ°Π·ΡΠΈΠΊΠΎΠΌ. ΠΡΠ°ΠΊ, ΡΠ°ΠΌΠΎ Π’Π, ΠΏΠΎΡΠ»Π΅ Π²ΡΠ΅Ρ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½ΠΈΠΉ:
ΠΠ° Π±Π°Π·Π΅ ΠΎΠ΄Π½ΠΎΠΏΠ»Π°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° vim2 ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ΅ΡΡΠ΅Ρ ΡΠΊΠΎΡΠΎΡΡΠΈ lte-ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· ΠΌΠΎΠ΄Π΅ΠΌΡ Huawei e3372h β 153 Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΡΠ²ΡΠ·ΠΈ (ΠΎΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄ΠΎ n). Π’Π°ΠΊ ΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Ρ GPS-ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ°, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎ UART. ΠΠ°ΠΌΠ΅ΡΡ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅ΡΠ²ΠΈΡΠ°
www.speedtest.net ΠΈ ΡΠ²ΠΎΠ΄ΠΈΡΡ ΠΈΡ Π² ΡΠ°Π±Π»ΠΈΡΡ Π²ΠΈΠ΄Π°:
Π’Π°Π±Π»ΠΈΡΠ° Π² ΡΠΎΡΠΌΠ°ΡΠ΅ csv. ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΎΡΡΡΠ»Π°ΡΡ Π½Π° Π΅-ΠΌΠ°ΠΉΠ» ΠΊΠ°ΠΆΠ΄ΡΠ΅ 6 ΡΠ°ΡΠΎΠ² Π΄Π°Π½Π½ΡΡ ΡΠ°Π±Π»ΠΈΡΠΊΡ. Π ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΌΠΈΠ³Π°ΡΡ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ ΠΊ GPIO.
Π’Π Ρ ΠΎΠΏΠΈΡΠ°Π» Π² Π²ΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΠ΅, ΠΏΠΎΡΠ»Π΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½ΠΈΠΉ. ΠΠΎ ΡΠΌΡΡΠ» Π·Π°Π΄Π°ΡΠΈ ΡΠΆΠ΅ Π²ΠΈΠ΄Π΅Π½. Π‘ΡΠΎΠΊ Π½Π° Π²ΡΠ΅ ΠΏΡΠΎ Π²ΡΠ΅ Π±ΡΠ» Π΄Π°Π½ Π½Π΅Π΄Π΅Π»Ρ. ΠΠΎ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΡΡΠΈ ΠΎΠ½ ΡΠ°ΡΡΡΠ½ΡΠ»ΡΡ Π½Π° ΡΡΠΈ Π½Π΅Π΄Π΅Π»ΠΈ. ΠΡΠΎ Ρ ΡΡΠ΅ΡΠΎΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Ρ Π΄Π΅Π»Π°Π» ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΈ ΠΏΠΎ Π²ΡΡ ΠΎΠ΄Π½ΡΠΌ.
ΠΠ΄Π΅ΡΡ Ρ Ρ ΠΎΡΡ Π΅ΡΠ΅ ΡΠ°Π· ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π·Π°ΠΊΠ°Π·ΡΠΈΠΊΠΎΠΌ Π±ΡΠ»ΠΎ Π·Π°ΡΠ°Π½Π΅Π΅ ΠΎΠ³ΠΎΠ²ΠΎΡΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ° ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΈ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅, ΡΡΠΎ ΡΠΈΠ»ΡΠ½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ»ΠΎ ΠΌΠΎΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ. ΠΡΠ» ΡΠ°ΠΊ ΠΆΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ Π±ΡΠ΄ΠΆΠ΅Ρ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΡΠΎΠ±ΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄ΠΎΠΊΡΠΏΠ°Π»ΠΎΡΡ. Π’Π°ΠΊ ΡΡΠΎ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΈΠ³ΡΠ°ΡΡ ΠΏΠΎ Π΄Π°Π½Π½ΡΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ.
ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°
Π‘Ρ Π΅ΠΌΠ° ΠΏΡΠΎΡΡΠ° ΠΈ ΠΎΡΠ΅Π²ΠΈΠ΄Π½Π°. ΠΠΎΡΡΠΎΠΌΡ ΠΎΡΡΠ°Π²Π»Ρ Π΅Π΅ Π±Π΅Π· ΠΎΡΠΎΠ±ΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π².
ΠΠ΅ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ ΡΠ΅ΡΠΈΠ» ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π½Π° python, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΎΠΏΡΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π° ΡΡΠΎΠΌ ΡΠ·ΡΠΊΠ΅ Ρ ΠΌΠ΅Π½Ρ Π½Π΅ Π±ΡΠ»ΠΎ ΡΠΎΠ²ΡΠ΅ΠΌ. ΠΡΠ±ΡΠ°Π» Π΅Π³ΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π±ΡΠ»Π° ΠΊΡΡΠ° Π³ΠΎΡΠΎΠ²ΡΡ
ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³Π»ΠΈ ΡΡΠΊΠΎΡΠΈΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ. ΠΠΎΡΡΠΎΠΌΡ, ΠΏΡΠΎΡΡ Π²ΡΠ΅Ρ
ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² Π½Π΅ ΡΡΠ³Π°ΡΡ ΠΌΠΎΠΉ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΎΠΏΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π° python, ΠΈ Π²ΡΠ΅Π³Π΄Π° Ρ ΡΠ΄ΠΎΠ²ΠΎΠ»ΡΡΡΠ²ΠΈΠ΅ΠΌ Π³ΠΎΡΠΎΠ² ΡΡΠ»ΡΡΠ°ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠ²Π½ΡΡ ΠΊΡΠΈΡΠΈΠΊΡ, Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠΊΠΈΠ»Π»Π°.
Π’Π°ΠΊΠΆΠ΅ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΎΡΠΊΡΡΠ», ΡΡΠΎ python ΠΈΠΌΠ΅Π΅Ρ Π΄Π²Π΅ Ρ ΠΎΠ΄ΠΎΠ²ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ 2 ΠΈ 3, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΡΡ Π½Π° ΡΡΠ΅ΡΡΠ΅ΠΉ.
ΠΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΠ΅ ΡΠ·Π»Ρ
ΠΠ΄Π½ΠΎΠΏΠ»Π°ΡΠ½ΠΈΠΊ vim2
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ ΠΌΠ½Π΅ Π±ΡΠ» Π΄Π°Π½ ΠΎΠ΄Π½ΠΎΠΏΠ»Π°ΡΠ½ΠΈΠΊ
ΠΡΠ»ΠΈΡΠ½ΡΠΉ, ΠΌΠΎΡΠ½ΡΠΉ ΠΌΠ΅Π΄ΠΈΠ°ΠΊΠΎΠΌΠ±Π°ΠΉΠ½ Π΄Π»Ρ ΡΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΌΠ° ΠΈ SMART-TV, Π½ΠΎ Π½Π° ΡΠ΅Π΄ΠΊΠΎΡΡΡ Π½Π΅ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠΈΠΉ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ, ΠΈΠ»ΠΈ ΡΠΊΠ°ΠΆΠ΅ΠΌ ΡΠ°ΠΊ, ΡΠ»Π°Π±ΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠΈΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅Π³ΠΎ Π³Π»Π°Π²Π½Π°Ρ ΠΠ‘ β ΡΡΠΎ Android, Π° Linux β ΡΡΠΎ ΠΏΠΎΠΏΡΡΠ½Π°Ρ ΠΠ‘, ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π½ΠΈΠΊΡΠΎ Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π²ΡΠ΅Ρ
ΡΠ·Π»ΠΎΠ² ΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΎΠ² ΠΏΠΎΠ΄ Linux. Π Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ ΡΠ°ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π±ΡΠ»Π° ΡΠ²ΡΠ·Π°Π½Π° Ρ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°ΠΌΠΈ USB Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΠΎΠ΄Π΅ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ Π½Π° Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ»Π°ΡΠ΅ Π½Π΅ ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠΆΠΈΠ΄Π°Π». Π’Π°ΠΊ ΠΆΠ΅ Ρ Π½Π΅Π³ΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΠ»ΠΎΡ
Π°Ρ ΠΈ ΡΠ°Π·ΡΠΎΠ·Π½Π΅Π½Π½Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π·Π°Π½ΠΈΠΌΠ°Π»Π° ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΊΠΎΠΏΠ°Π½ΠΈΡ Π² Π΄ΠΎΠΊΠ°Ρ
. ΠΠ°ΠΆΠ΅ ΡΡΠ΄ΠΎΠ²Π°Ρ ΡΠ°Π±ΠΎΡΠ° Ρ GPIO ΠΏΠΎΠΏΠΈΠ»Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΡΠΎΠ²ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΠ±Ρ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄ΠΎΠΌ, ΠΌΠ½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΠ»ΠΎΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΠΎΠ². ΠΠΎ, Π΅ΡΠ»ΠΈ Π±ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ, ΡΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΠΎ Π½Π΅ Π±ΡΠ»ΠΎ Π²Π°ΠΆΠ½ΠΎ, ΡΡΠΎ Π·Π° ΠΎΠ΄Π½ΠΎΠΏΠ»Π°ΡΠ½ΠΈΠΊ, Π³Π»Π°Π²Π½ΠΎΠ΅, ΡΡΠΎΠ±Ρ ΡΠ°Π±ΠΎΡΠ°Π» ΠΈ Π±ΡΠ»ΠΈ USB-ΠΏΠΎΡΡΡ.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΠΌΠ½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Linux Π½Π° Π΄Π°Π½Π½ΡΡ ΠΏΠ»Π°ΡΡ. Π§ΡΠΎΠ±Ρ Π½Π΅ ΡΡΡΠΊΠ°ΡΡ Π²ΡΠ΅ΠΌ ΠΏΠΎ Π΄Π΅Π±ΡΡΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ Ρ ΡΡΠΈΠΌ ΠΎΠ΄Π½ΠΎΠΏΠ»Π°ΡΠ½ΠΈΠΊΠΎΠΌ, ΠΏΠΈΡΡ Π΄Π°Π½Π½ΡΡ Π³Π»Π°Π²Ρ.
ΠΡΡΡ Π΄Π²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ° ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π»ΠΈΠ½ΡΠΊΡ: Π½Π° Π²Π½Π΅ΡΠ½ΡΡ SD-ΠΊΠ°ΡΡΡ, Π»ΠΈΠ±ΠΎ Π½Π° Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ MMC. Π‘ ΠΊΠ°ΡΡΠΎΠΉ Ρ ΠΏΠΎΠ±ΠΈΠ»ΡΡ Π²Π΅ΡΠ΅ΡΠΎΠΊ, ΡΠ°ΠΊ ΠΈ Π½Π΅ Π²ΠΊΡΡΠΈΠ» ΠΊΠ°ΠΊ ΠΆΠ΅ Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ΅ΡΠΈΠ» ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Π½Π° MMC, Ρ ΠΎΡΡ Π±Π΅Π· ΡΠΎΠΌΠ½Π΅Π½ΠΈΡ Ρ Π²Π½Π΅ΡΠ½Π΅ΠΉ ΠΊΠ°ΡΡΠΎΠΉ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ Π±ΡΠ»ΠΎ Π±Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ.
Π ΠΏΡΠΎΡΠΈΠ²ΠΊΠ΅
- Tool Pin GND: <β> Pin17 of VIMsβs GPIO
- Tool Pin TXD: <β> Pin18 of VIMsβs GPIO (Linux_Rx)
- Tool Pin RXD: <β> Pin19 of VIMsβs GPIO (Linux_Tx)
- Tool Pin VCC: <β> Pin20 of VIMsβs GPIO
ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ, Ρ ΡΠΊΠ°ΡΠ°Π» ΠΏΡΠΎΡΠΈΠ²ΠΊΡ
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π·Π°Π»ΠΈΡΡ Π΄Π°Π½Π½ΡΡ ΠΏΡΠΎΡΠΈΠ²ΠΊΡ, ΠΌΠ½Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡ Π½ΡΠΆΠ½Ρ ΡΡΠΈΠ»ΠΈΡΡ. ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠ± ΡΡΠΎΠΌ ΡΠ°ΡΡΠΊΠ°Π·Π°Π½ΠΎ
git clone https://github.com/khadas/utils
cd /path/to/utils
sudo ./INSTALL
ΠΠΈΠΈβ¦ ΠΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΠΎΡΡΠ°ΡΠΈΠ» ΠΏΠ°ΡΡ ΡΠ°ΡΠΎΠ² Π·Π°Π½ΠΈΠΌΠ°ΡΡΡ ΠΏΡΠ°Π²ΠΊΠ°ΠΌΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΎΡΠ½ΡΡ ΡΠΊΡΠΈΠΏΡΠΎΠ², ΡΡΠΎΠ±Ρ Π²ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΠΎΡΡ Ρ ΠΌΠ΅Π½Ρ. Π§ΡΠΎ ΡΠ°ΠΌ Π΄Π΅Π»Π°Π» Π½Π΅ ΠΏΠΎΠΌΠ½Ρ, Π½ΠΎ ΡΠΎΠΆΠ΅ Π΅ΡΠ΅ ΡΠΎΡ ΡΠΈΡΠΊ Ρ ΠΊΠΎΠ½ΡΠΌΠΈ. Π’Π°ΠΊ ΡΡΠΎ Π±ΡΠ΄ΡΡΠ΅ ΠΎΡΡΠΎΡΠΎΠΆΠ½Ρ. ΠΠΎ Π±Π΅Π· ΡΡΠΈΡ ΡΡΠΈΠ»ΠΈΡ Π΄Π°Π»ΡΡΠ΅ ΠΌΡΡΠΈΡΡ vim2 ΡΠΌΡΡΠ»Π° Π½Π΅Ρ. ΠΡΡΡΠ΅ Ρ Π½ΠΈΠΌ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΡΠ²ΡΠ·ΡΠ²Π°ΡΡΡΡ!
ΠΠΎΡΠ»Π΅ ΡΠ΅ΠΌΠΈ ΠΊΡΡΠ³ΠΎΠ² Π°Π΄Π°, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ² ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΠΎΠ»ΡΡΠΈΠ» ΠΏΠ°ΠΊΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ
ΡΡΠΈΠ»ΠΈΡ. ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΠ» ΠΏΠ»Π°ΡΡ ΠΏΠΎ USB ΠΊ ΠΌΠΎΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ Π»ΠΈΠ½ΡΠΊΡ, ΠΈ ΡΠ°ΠΊ ΠΆΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ UART ΠΏΠΎ ΡΡ
Π΅ΠΌΠ΅ Π²ΡΡΠ΅.
ΠΠ°ΡΡΡΠ°ΠΈΠ²Π°Ρ ΠΌΠΎΠΉ Π»ΡΠ±ΠΈΠΌΡΠΉ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» minicom Π½Π° ΡΠΊΠΎΡΠΎΡΡΡ 115200, Π±Π΅Π· Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΎΡΠΈΠ±ΠΎΠΊ. Π ΠΏΡΠΈΡΡΡΠΏΠ°Π΅ΠΌ.
ΠΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ VIM2 Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ UART Π½Π°ΠΆΠΈΠΌΠ°Ρ ΠΊΠ°ΠΊΡΡ-Π»ΠΈΠ±ΠΎ ΠΊΠ»Π°Π²ΠΈΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ±Π΅Π», ΡΡΠΎΠ±Ρ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ. ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΡΠ²ΠΈΡΡΡ ΡΡΡΠΎΠΊΠ°
kvim2#
ΠΠ²ΠΎΠΆΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
kvim2# run update
ΠΠ° Ρ ΠΎΡΡΠ΅, ΠΎΡΠΊΡΠ΄Π° Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ, Π²ΡΠΏΠΎΠ»Π½ΡΡ:
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 ΠΏΠΎΡΠ»Π΅ Π²ΡΠ΅Ρ Π½Π°ΡΡΡΠΎΠ΅ΠΊ, Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ: ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄Π΅ΠΌΠ°, Ρ ΠΌΠ΅Π½Ρ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ eth*, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎ dhcp ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ip Π°Π΄ΡΠ΅Ρ 192.168.8.100, ΠΈ ΡΠ»ΡΠ· ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 192.168.8.1.
Π ΡΠ°ΠΌΡΠΉ Π³Π»Π°Π²Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ! ΠΠ°Π½Π½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΌΠΎΠ΄Π΅ΠΌΠ°, Π½Π΅ ΡΠΌΠ΅Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΌΠΎΠ΄Π΅ΠΌΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΠ’-ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ. ΠΡΠ΅ Π±ΡΠ»ΠΎ Π±Ρ ΡΠΈΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΠ΅, ΡΠΎΠ·Π΄Π°ΡΡ ppp-ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΌΠΎΠ΄Π΅ΠΌ ΠΈ Π΄Π°Π»ΡΡΠ΅ ΡΠΆΠ΅ ΠΎΠΏΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ Π½ΠΈΠΌΠΈ. ΠΠΎ Π² ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Β«ΡΠ°ΠΌΒ» (ΡΠΎΡΠ½Π΅Π΅ Π΄Π°ΠΉΠ²Π΅ΡΠ° Linux ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ udev), ΡΠΎΠ·Π΄Π°Π΅Ρ eth-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈ ΠΏΠΎ dhcp Π½Π°Π·Π½Π°ΡΠ°ΡΡ Π΅ΠΌΡ ip-Π°Π΄ΡΠ΅Ρ.
Π§ΡΠΎΠ±Ρ Π΄Π°Π»ΡΡΠ΅ Π½Π΅ ΠΏΡΡΠ°ΡΡΡΡ, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ Π·Π°Π±ΡΡΡ ΡΠ»ΠΎΠ²ΠΎ Β«ΠΌΠΎΠ΄Π΅ΠΌΒ» ΠΈ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΡΠ΅ΡΠ΅Π²Π°Ρ ΠΊΠ°ΡΡΠ° ΠΈ ΡΠ»ΡΠ·, ΠΈΠ±ΠΎ ΠΏΠΎ ΡΡΡΠΈ, ΡΡΠΎ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΠΊΠ°ΡΡΡ ΡΠΎ ΡΠ»ΡΠ·ΠΎΠΌ.
ΠΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠ΄Π΅ΠΌ, ΡΡΠΎ Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΎΡΠΎΠ±ΡΡ
ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π½ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΈΡ
Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ n-ΡΡΡΠΊ, ΡΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΊΠ°ΡΡΠΈΠ½Π° ΡΠ΅ΡΠΈ.
Π’ΠΎ Π΅ΡΡΡ n ΡΠ΅ΡΠ΅Π²ΡΡ
ΠΊΠ°ΡΡ, Ρ ΠΎΠ΄Π½ΠΈΠΌ IP-Π°Π΄ΡΠ΅ΡΠΎΠΌ, Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠ»ΡΠ· ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠΎ ΠΏΠΎ ΡΠ°ΠΊΡΡ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ
ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ ΠΊ ΡΠ²ΠΎΠ΅ΠΌΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ.
ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Ρ ΠΌΠ΅Π½Ρ Π±ΡΠ»ΠΎ ΠΏΡΠΎΡΡΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅: Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ifconfig ΠΈΠ»ΠΈ ip Π³Π°ΡΠΈΡΡ Π²ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΈ ΠΏΡΠΎΡΡΠΎ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΏΠΎ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ. Π Π΅ΡΠ΅Π½ΠΈΠ΅ Π±ΡΠ»ΠΎ Π²ΡΠ΅ΠΌ Ρ ΠΎΡΠΎΡΠΎ, ΠΊΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π² ΠΌΠΎΠΌΠ΅Π½ΡΡ ΠΊΠΎΠΌΠΌΡΡΠ°ΡΠΈΠΈ Ρ Π½Π΅ ΠΈΠΌΠ΅Π» Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ ΠΊ ΡΡΡΡΠΎΠΉΡΡΠ²Ρ. Π ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠΎΠΌΠΌΡΡΠ°ΡΠΈΠΈ ΡΠ°ΡΡΡΠ΅ ΠΈ Π±ΡΡΡΡΡΠ΅, ΡΠΎ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Ρ ΠΌΠ΅Π½Ρ Π½Π΅ Π±ΡΠ»ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ Π²ΠΎΠΎΠ±ΡΠ΅.
ΠΠΎΡΡΠΎΠΌΡ Ρ Π²ΡΠ±ΡΠ°Π» ΠΏΡΡΡ ΠΌΠ΅Π½ΡΡΡ Β«Π²ΡΡΡΠ½ΡΡΒ» ip-Π°Π΄ΡΠ΅ΡΠ° ΠΌΠΎΠ΄Π΅ΠΌΠΎΠ² ΠΈ Π΄Π°Π»ΡΡΠ΅ Π³ΠΎΠ½ΡΡΡ ΡΡΠ°ΡΠΈΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ.
ΠΠ° ΡΡΠΎΠΌ Ρ ΠΌΠ΅Π½Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΌΠΎΠ΄Π΅ΠΌΠ°ΠΌΠΈ Π½Π΅ Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»ΠΈΡΡ: Π² ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ, ΠΎΠ½ΠΈ ΠΎΡΠ²Π°Π»ΠΈΠ²Π°Π»ΠΈΡΡ, ΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ Ρ
ΠΎΡΠΎΡΠ΅Π΅ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΏΠΈΡΠ°Π½ΠΈΠ΅ USB-Ρ
Π°Π±Π°. ΠΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ΅ΡΠΈΠ» ΠΆΠ΅ΡΡΠΊΠΎ ΠΏΡΠΈΠΏΠ°ΡΠ² ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΡΠΌΠΎ ΠΊ Ρ
Π°Π±Ρ. ΠΡΡΠ³Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Ρ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ ΠΈ ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ³ΡΠ±ΠΈΠ»Π° Π²Π΅ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ: ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈΠ»ΠΈ Ρ
ΠΎΠ»ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠ° ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ»ΠΈΡΡ Π½Π΅ Π²ΡΠ΅ ΠΌΠΎΠ΄Π΅ΠΌΡ ΠΈ Π½Π΅ Π²ΡΠ΅Π³Π΄Π°, ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΠ»ΠΎ ΠΈ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΌΠ½Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ. ΠΠΎ ΠΎΠ±ΠΎ Π²ΡΠ΅ΠΌ ΠΏΠΎ ΠΏΠΎΡΡΠ΄ΠΊΡ.
ΠΠ»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ ΠΌΠΎΠ΄Π΅ΠΌΠ°, Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ» ΠΏΠ°ΠΊΠ΅Ρ usb-modeswitch.
sudo apt update
sudo apt install -y usb-modeswitch
ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ, ΠΌΠΎΠ΄Π΅ΠΌ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ udev. ΠΡΠΎΠ²Π΅ΡΡΡ, ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΠ² ΠΌΠΎΠ΄Π΅ΠΌ ΠΈ ΡΠ±Π΅Π΄ΠΈΠ²ΡΠΈΡΡ, ΡΡΠΎ ΡΠ΅ΡΡ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ.
ΠΡΠ΅ ΠΎΠ΄Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΊΠΎΡΠΎΡΡΡ Ρ Π½Π΅ ΡΠΌΠΎΠ³ ΡΠ΅ΡΠΈΡΡ: ΡΡΠΎ ΠΊΠ°ΠΊ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠ΄Π΅ΠΌΠ° ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠΌΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°, Ρ ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ? ΠΠΌΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π² Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ ΠΌΠΎΠ΄Π΅ΠΌΠ° ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ 192.168.8.1. ΠΡΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠ°Ρ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ajax-Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΎΡΡΠΎ wget-ΡΠ½ΡΡΡ ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ ΡΠΏΠ°ΡΡΠΈΡΡ ΠΈΠΌΡ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ. ΠΠΎΡΡΠΎΠΌΡ Π½Π°ΡΠ°Π» ΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΊΠ°ΠΊ ΠΎΡΡΠ°Π±ΠΎΡΠ°ΡΡ web-ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ Ρ.ΠΏ., ΠΈ ΠΏΠΎΠ½ΡΠ», ΡΡΠΎ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ Π΅ΡΡΠ½Π΄ΠΎΠΉ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠ»ΡΠ½ΡΠ», ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Π½Π°ΡΠ°Π» ΠΏΠΎΠ»ΡΡΠ°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ API ΡΠ°ΠΌΠΎΠ³ΠΎ Speedtest.
ΠΠ½ΠΎΠ³ΠΎΠ΅ Π±ΡΠ»ΠΎ Π±Ρ ΠΏΡΠΎΡΠ΅, Π΅ΡΠ»ΠΈ Π±Ρ Ρ ΠΌΠΎΠ΄Π΅ΠΌΠ° Π±ΡΠ» Π±Ρ Π΄ΠΎΡΡΡΠΏ ΡΠ΅ΡΠ΅Π· AT-ΠΊΠΎΠΌΠ°Π½Π΄Ρ. ΠΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π΅Π³ΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ppp-ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅, Π½Π°Π·Π½Π°ΡΠ°ΡΡ IP, ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΡΠ²ΡΠ·ΠΈ ΠΈ Ρ.Π΄. ΠΠΎ ΡΠ²Ρ, ΡΠ°Π±ΠΎΡΠ°Ρ Ρ ΡΠ΅ΠΌ ΡΡΠΎ Π΄Π°Π»ΠΈ.
GPS
GPS-ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠ½Π΅ Π²ΡΠ΄Π°Π»ΠΈ, ΠΈΠΌΠ΅Π» ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ UART ΠΈ ΠΏΠΈΡΠ°Π½ΠΈΠ΅. ΠΡΠΎ Π±ΡΠ»ΠΎ Π½Π΅ ΡΠ°ΠΌΠΎΠ΅ Π»ΡΡΡΠ΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, Π½ΠΎ ΡΠ΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΡΠ°Π±ΠΎΡΠ΅Π΅ ΠΈ ΠΏΡΠΎΡΡΠΎΠ΅. ΠΡΠΈΠ΅ΠΌΠ½ΠΈΠΊ Π±ΡΠ» ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°.
Π§Π΅ΡΡΠ½ΠΎ Π³ΠΎΠ²ΠΎΡΡ, Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π» Ρ 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
ΠΠ°Π½Π½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΡΡΠ΄Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌΡ, Π½Π° Π»Π΅ΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠ΅Ρ devtree, ΡΡΠΎ Π²Π΅ΡΡΠΌΠ° ΡΠ΄ΠΎΠ±Π½ΠΎ.
ΠΠΎΡΠ»Π΅ ΡΡΠΏΠ΅Ρ Π° ΡΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΡ ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ 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.
Π ΡΡΠΊΠ°Ρ
ΠΏΡΠΎΠ²ΠΎΠ΄ GPS, ΠΏΠΎΠ΄ ΠΏΠ°Π»ΡΡΠ°ΠΌΠΈ Π²ΠΈΠ΄Π½Ρ ΠΏΡΠΎΠ²ΠΎΠ΄Π° UART ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ°.
ΠΠ΅ΡΠ΅Π·Π°Π³ΡΡΠΆΠ°ΡΡΡ, ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡ ΡΠ°Π±ΠΎΡΡ GPS Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ gpsmon.
ΠΠ° ΡΡΠΎΠΌ ΡΠΊΡΠΈΠ½ΡΠΎΡΠ΅ ΡΠΏΡΡΠ½ΠΈΠΊΠΎΠ² Π½Π΅ Π²ΠΈΠ΄Π°ΡΡ, Π½ΠΎ Π²ΠΈΠ΄Π½ΠΎ ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Ρ GPS-ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠΎΠΌ, ΠΈ ΡΡΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡ, ΡΡΠΎ Π²ΡΠ΅ Ρ
ΠΎΡΠΎΡΠΎ.
ΠΠ° python ΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°Π» ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΡΠ°Π±ΠΎΡΡ Ρ Π΄Π°Π½Π½ΡΠΌ Π΄Π΅ΠΌΠΎΠ½ΠΎΠΌ, Π½ΠΎ Ρ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΡΡ Π½Π° ΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π» Ρ 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, ΠΏΠ°ΡΡΠΈΡΡ ΠΈΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅ ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π½ΠΈΠΌΠΈ. ΠΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π΅ Π±ΡΠ»ΠΎ ΡΠΎΠ²ΡΠ΅ΠΌ, ΠΎΡΡΡΠ΄Π° Π»ΡΡΡΠΉ Π½Π΅ΠΊΡΠ°ΡΠΈΠ²ΡΠΉ ΠΊΠΎΠ΄. Π Π΄Π°, ΠΌΠ½Π΅ Π½Π΅ ΡΡΡΠ΄Π½ΠΎ.
Π‘Π²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄
Π‘ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄Π° Π±ΡΠ»ΠΎ Π²ΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. ΠΠ»Π°Π²Π½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΈΠ½Π° Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ Π½Π΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π½ΠΎΠΌΠ΅ΡΡ ΠΏΠΈΠ½Π° Π½Π° ΠΏΠ»Π°ΡΠ΅ ΠΈ ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π½Π°ΠΏΠΈΡΠ°Π½Π° Π»Π΅Π²ΠΎΠΉ ΠΏΡΡΠΊΠΎΠΉ. Π§ΡΠΎΠ±Ρ ΡΠΎΠΏΠΎΡΡΠ°Π²ΠΈΡΡ Π½ΠΎΠΌΠ΅Ρ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΈΠ½Π° ΠΈ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΈΠ½Π° Π² ΠΠ‘, Π½Π°Π΄ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
gpio readall
ΠΡΠ΄Π΅Ρ Π²ΡΠ²Π΅Π΄Π΅Π½Π° ΡΠ°Π±Π»ΠΈΡΠ° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΠΏΠΈΠ½Π° Π² ΡΠΈΡΡΠ΅ΠΌΠ΅, ΠΈ Π½Π° ΠΏΠ»Π°ΡΠ΅. ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Ρ ΡΠΆΠ΅ ΠΌΠΎΠ³Ρ ΠΎΠΏΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΈΠ½ΠΎΠΌ Π² ΡΠ°ΠΌΠΎΠΉ ΠΠ‘. Π ΠΌΠΎΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ ΠΊ 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() ΠΈ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄ Π½Π°ΠΌ ΠΊΡΠ°ΡΠΈΠ²ΠΎ ΠΏΠΎΠΌΠΈΠ³Π°Π΅Ρ.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΡΠ·Π»Ρ
Speedtest API
ΠΠΎΠ»ΡΡΠ°Ρ ΡΠ°Π΄ΠΎΡΡΡ, ΡΡΠΎ Ρ ΡΠ΅ΡΠ²ΠΈΡΠ° speedtest.net Π΅ΡΡΡ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ python-API, ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°
Π§Π΅ΠΌ Ρ
ΠΎΡΠΎΡΠΎ, ΡΡΠΎ Π΅ΡΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠ΅ ΠΊΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ. ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π΄Π°Π½Π½ΡΠΌ API (ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ) ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π²
Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Ρ python-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ.
sudo -H pip3 install speedtest-cli
ΠΠ»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠΏΠΈΠ΄ΡΠ΅ΡΡΠ΅Ρ Π² Ubuntu ΠΏΡΡΠΌΠΎ ΠΈΠ· ΡΠ΅ΠΏ. ΠΡΠΎ ΡΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ python-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΡΠΌΠΎ ΠΈΠ· ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ.
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"
#ΡΡΡ ΠΈΠ΄Π΅Ρ Π·Π°ΠΏΠΈΡΡ Π² ΡΠ°ΠΉΠ» Π»ΠΎΠ³ΠΎΠ²
ΠΠ΄Π΅ΡΡ ΡΠΎΠΆΠ΅ ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ Π½Π΅ ΡΠ°ΠΊ Π²ΡΠ΅ ΠΏΡΠΎΡΡΠΎ, Ρ ΠΎΡΡ, ΠΊΠ°Π·Π°Π»ΠΎΡΡ Π±Ρ, ΠΊΡΠ΄Π° ΠΏΡΠΎΡΠ΅. ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ servers Ρ ΠΌΠ΅Π½Ρ Π±ΡΠ» ΡΠ°Π²Π΅Π½ [], ΠΌΠΎΠ» Π²ΡΠ±Π΅ΡΠΈ Π»ΡΡΡΠΈΠΉ ΡΠ΅ΡΠ²Π΅Ρ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Ρ ΠΌΠ΅Π½Ρ Π±ΡΠ»ΠΈ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ°, ΠΈ ΠΊΠ°ΠΊ Π½Π΅ΡΡΡΠ΄Π½ΠΎ Π΄ΠΎΠ³Π°Π΄Π°ΡΡΡΡ, ΠΏΠ»Π°Π²Π°ΡΡΠ°Ρ ΡΠΊΠΎΡΠΎΡΡΡ. ΠΡΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½Π°Ρ ΡΠ΅ΠΌΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ, Π΅ΡΠ»ΠΈ Π΄Π°, ΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ»ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ, ΡΡΠ΅Π±ΡΠ΅Ρ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎ Π²ΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π³ΡΠ°ΡΠΈΠΊΠΎΠ² Π·Π°ΠΌΠ΅ΡΠΎΠ² ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΠΈΠ»Π°ΠΉΠ½Π° ΠΏΡΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΌ Π²ΡΠ±ΠΎΡΠ΅ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ.
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΏΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°.
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΊΠΎΡΠΎΡΡΠΈ, ΠΏΡΠΈ ΠΎΠ΄Π½ΠΎΠΌ ΡΡΡΠΎΠ³ΠΎ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΌ ΠΎΠ΄Π½ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅.
Β«Π¨Π΅ΡΡΡΡΒ» ΠΏΡΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π΅ΡΡΡ ΠΈ ΡΠ°ΠΌ ΠΈ ΡΠ°ΠΌ, ΠΈ Π΅Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠ±ΠΈΡΠ°ΡΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ. ΠΠΎ ΠΏΡΠΈ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π΅Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π½ΡΡΠ΅ ΠΈ Π°ΠΌΠΏΠ»ΠΈΡΡΠ΄Π° ΡΡΠ°Π±ΠΈΠ»ΡΠ½Π΅Π΅.
ΠΠΎΠΎΠ±ΡΠ΅ ΡΡΠΎ ΠΌΠ΅ΡΡΠΎ Π±ΠΎΠ»ΡΡΠΈΡ
ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΉ. Π Ρ Π±Ρ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠ» Π·Π°ΠΌΠ΅ΡΡ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΊ ΡΠ²ΠΎΠ΅ΠΌΡ ΡΠ΅ΡΠ²Π΅ΡΡ, ΠΏΠΎ ΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΡΡΠΈΠ»ΠΈΡΡ iperf. ΠΠΎ ΠΌΡ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΠΎΡ Π’Π.
ΠΡΠΏΡΠ°Π²ΠΊΠ° ΠΏΠΎΡΡΡ ΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ
ΠΠ»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΏΠΎΡΡΡ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°Π» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄Π΅ΡΡΡΠΊΠΎΠ² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ², Π½ΠΎ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠ»ΡΡ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ. ΠΠ°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π» ΠΏΠΎΡΡΠΎΠ²ΡΠΉ ΡΡΠΈΠΊ Π½Π° yandex ΠΈ Π΄Π°Π»Π΅Π΅ Π²Π·ΡΠ»
ΠΡΠΏΡΠ°Π²ΠΊΠ° Π»ΠΎΠ³ΠΎΠ² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ» ΠΏΠΎ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΡ, ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΡΠ²ΡΠ·ΠΈ, ΠΊΠ°ΠΆΠ΄ΡΠ΅ 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 ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π² ΡΡΡΠΊΠΈ (ΡΡΠΎ Π±ΠΎΠ»Ρ, ΠΏΠ΅ΡΠ°Π»Ρ ΠΈ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅). ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π΄Π°ΠΆΠ΅ Π² ΠΌΠΈΠ½ΡΡΡ ΠΌΠΎΠ³Π»ΠΎ Π±ΡΡΡ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ ΠΎΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΠΎ ΠΏΠΎΡΡΠ΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΎΡΠΊΠ°Π·Π°ΡΡΡΡ. Π’Π°ΠΊ ΡΡΠΎ ΠΈΠΌΠ΅ΠΉΡΠ΅ Π² Π²ΠΈΠ΄Ρ, ΠΏΡΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠ΅ΡΠ΅Π· ΡΠ΅ΡΠ²ΠΈΡΡ ΡΠ½Π΄Π΅ΠΊΡΠ° ΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅.
Π‘Π΅ΡΠ²Π΅Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·ΠΈ
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ ΠΆΠ΅Π»Π΅Π·ΠΊΠ΅ ΠΈ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΅Π΅ Π΄ΠΎΠ½Π°ΡΡΡΠΎΠΈΡΡ ΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ½Π΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΠ»ΡΡ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΡΠ΅ΡΠ²Π΅Ρ. ΠΠΎΠΎΠ±ΡΠ΅, ΡΠΏΡΠ°Π²Π΅Π΄Π»ΠΈΠ²ΠΎΡΡΠΈ Π³ΠΎΠ²ΠΎΡΡ, ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ ΠΈ Π² Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ ΡΡΡΠΎΠΈΡΡ Π²ΡΠ΅ ΠΊΡΠ°ΡΠΈΠ²ΡΠ΅ Π³ΡΠ°ΡΠΈΠΊΠΈ. ΠΠΎ Π½Π΅ Π²ΡΠ΅ ΡΡΠ°Π·Ρ.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ VPS Ρ Π²ΡΠ±ΡΠ°Π»
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΏΠΎΡΠΎΠ±Π° ΡΠ²ΡΠ·ΠΈ Ρ ΠΆΠ΅Π»Π΅Π·ΠΊΠΎΠΉ vim2 Π²ΡΠ±ΡΠ°Π» ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ΅ ssh ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΈ ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π»Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° β Π½Π΅ ΡΠ°ΠΌΠΎΠ΅ Π»ΡΡΡΠ΅Π΅. ΠΡΠΈ ΡΠ°Π·ΡΡΠ²Π΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΡΠ΅ΡΠ²Π΅Ρ ΡΠ΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΠΎΡΡ ΠΈ ΠΏΠΎ Π½Π΅ΠΌΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΠΎΡΡΠΎΠΌΡ, Π²ΡΠ΅ ΠΆΠ΅ Π»ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΡΠ²ΡΠ·ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ vpn. Π Π±ΡΠ΄ΡΡΠ΅ΠΌ Ρ
ΠΎΡΠ΅Π» ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° vpn, Π½ΠΎ Π½Π΅ ΡΡΠΏΠ΅Π».
ΠΠ΅ Π±ΡΠ΄Ρ Π²Π΄Π°Π²Π°ΡΡΡΡ Π² ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ°ΠΉΡΠ²ΠΎΠ»Π°, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΏΡΠ°Π², ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ssh ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ root ΠΈ ΠΏΡΠΎΡΠΈΠ΅ ΠΏΡΠΎΠΏΠΈΡΠ½ΡΠ΅ ΠΈΡΡΠΈΠ½Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ VPS. Π₯ΠΎΡΠ΅ΡΡΡ Π²Π΅ΡΠΈΡΡ, ΡΡΠΎ Π²Ρ ΠΈ ΡΠ°ΠΊ Π²ΡΠ΅ Π·Π½Π°Π΅ΡΠ΅. ΠΠ»Ρ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, ΡΠΎΠ·Π΄Π°Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅.
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 Π½Π° ΠΌΠΎΠΉ ΡΠ΅ΡΠ²Π΅Ρ, ΡΡΠΎ Π²Π΅ΡΡΠΌΠ° ΡΠ΄ΠΎΠ±Π½ΠΎ.
Π‘ΠΎΠ±ΠΈΡΠ°Π΅ΠΌ Π²ΡΠ΅ Π²ΠΎΠ΅Π΄ΠΈΠ½ΠΎ
ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΠΏΡΠΈΡΡΡΠΏΠ°Π΅ΠΌ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ΅
Π€ΡΡ
, Π½Ρ Π²ΡΠΎΠ΄Π΅ Π²ΡΠ΅, ΠΎΠΏΠΈΡΠ°Π» Π²ΡΠ΅ ΡΠ·Π»Ρ. Π’Π΅ΠΏΠ΅ΡΡ ΠΏΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠΎΠ±ΡΠ°ΡΡ Π²ΡΠ΅ ΡΡΠΎ Π² Π΅Π΄ΠΈΠ½ΡΡ ΠΊΡΡΡ. ΠΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ
ΠΠ°ΠΆΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Ρ ΠΊΠΎΠ΄ΠΎΠΌ: ΠΠ°Π½Π½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Π²ΠΎΡ ΡΠ°ΠΊ Π²ΠΎΡ Β«Π²Π»ΠΎΠ±Β» ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ Π·Π°ΠΏΡΡΡΠΈΡΡΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π·Π°ΡΠ°ΡΠΈΠ²Π°Π»ΡΡ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π·Π°Π΄Π°ΡΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ. Π₯ΠΎΡΡ Ρ ΠΈ Π΄Π°Ρ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ, Π½ΠΎ Π²ΡΠ΅ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΡΠ΅Π½Π½ΠΎΠ΅ ΡΠ°Π·Π±Π΅ΡΡ Π²ΠΎΡ ΡΡΡ, ΠΏΡΡΠΌΠΎ Π² ΡΠ΅ΠΊΡΡΠ΅, ΠΈΠ½Π°ΡΠ΅ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΠΎ.
Π Π½Π°ΡΠ°Π»Π΅ Ρ ΠΌΠ΅Π½Ρ ΠΈΠ΄Π΅Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ gps, gpio ΠΈ Π·Π°ΠΏΡΡΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠ°.
#Π·Π°ΠΏΡΡΠΊ ΠΏΠΎΡΠΎΠΊΠ° ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠ°
pShedulerThread = threading.Thread(target=ShedulerThread, args=(1,))
pShedulerThread.start()
ΠΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡ: ΠΎΠ½ ΡΠΌΠΎΡΡΠΈΡ Π½Π΅ ΠΏΡΠΈΡΠ»ΠΎ Π»ΠΈ Π²ΡΠ΅ΠΌΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΈ ΠΊΠ°ΠΊΠΎΠΉ ΡΠ΅ΠΉΡΠ°Ρ ΡΡΠΎΠΈΡ ΡΡΠ°ΡΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ. ΠΡΠ»ΠΈ Π΅ΡΡΡ ΡΠ»Π°Π³ ΠΎΡΠΈΠ±ΠΊΠΈ, ΡΠΎ ΠΌΠΈΠ³Π°Π΅ΠΌ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄ΠΎΠΌ.
#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)
Π‘Π°ΠΌΡΠΉ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ β ΡΡΠΎ ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ΅ ssh-ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ΅ΡΡΠ΅. Π ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ΅ΡΡΠ΅ ΠΈΠ΄Π΅Ρ Π·Π°Π½ΠΎΠ²ΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ»ΡΠ·Π° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈ 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 ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ (Π΅ΡΠ»ΠΈ Π½Π΅ Π±ΡΠ»ΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ), ΠΎΡΠΏΡΠ°Π²Π»ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ, Π΅ΡΠ»ΠΈ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΈΡΠ»ΠΎ, ΠΎΡΠΏΡΠ°Π²Π»ΡΡ Π»ΠΎΠ³ΠΈ ΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ² ΠΏΡΠΎΠ²ΠΎΠΆΡ 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()
#ΠΈ Π΄Π°Π»Π΅Π΅ ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌ ΡΠΊΠΎΡΠΎΡΡΡ ΠΈ ΡΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ Π»ΠΎΠ³ΠΈ.
Π Π°Π·Π²Π΅ ΡΡΠΎ ΡΡΠΎΠΈΡ ΡΠΊΠ°Π·Π°ΡΡ ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ 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, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠ» Π² ΡΠ΅ΡΠ΅Π½ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π΄Π½Π΅ΠΉ.
ΠΠ΄Π΅ΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ·ΠΌΠ΅ΡΡΡΡΠΈΠΉ ΡΠ΅ΡΠ²Π΅Ρ. ΠΠ°ΠΌΠ΅ΡΡ ΡΠΊΠΎΡΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Π½ΠΎ ΠΎΡΠ΅Π½Ρ ΡΠΈΠ»ΡΠ½ΠΎ ΠΏΠ»Π°Π²Π°ΡΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π²ΡΠ΅ ΠΆΠ΅ Π²ΠΈΠ΄Π½Π° Π½Π΅ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠ΅Π΄Π½ΡΡ Π²Π΅Π»ΠΈΡΠΈΠ½Π°, ΠΈ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ, ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Ρ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ
, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΊΠΎΠ»ΡΠ·ΡΡΠΈΠΌ ΡΡΠ΅Π΄Π½ΠΈΠΌ.
ΠΠΎΠ·Π΄Π½Π΅Π΅ Ρ ΠΏΠΎΡΡΡΠΎΠΈΠ» Π΅ΡΠ΅ ΡΡΠ΄ Π³ΡΠ°ΡΠΈΠΊΠΎΠ², Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΡΠ²ΡΠ·ΠΈ. Π‘Π΅ΡΠ²Π΅Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠΆΠ΅ Π±ΡΠ» ΠΎΠ΄ΠΈΠ½, ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠΎΠΆΠ΅ ΠΎΡΠ΅Π½Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅.
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΡΠ΅ΠΌΠ° ΠΎΡΠ΅Π½Ρ ΠΎΠ±ΡΠΈΡΠ½Π°Ρ Π΄Π»Ρ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΠΈΡ
Π΄Π°Π½Π½ΡΡ
, ΠΈ ΡΠ²Π½ΠΎ Π½Π΅ ΡΡΠ½Π΅Ρ Π½Π° ΠΏΠ°ΡΡ Π½Π΅Π΄Π΅Π»Ρ ΡΠ°Π±ΠΎΡΡ. ΠΠΎβ¦
ΠΡΠΎΠ³ ΡΠ°Π±ΠΎΡΡ
Π Π°Π±ΠΎΡΠ° Π±ΡΠ»Π° ΡΠ΅Π·ΠΊΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½Π° ΠΏΠΎ Π½Π΅Π·Π°Π²ΠΈΡΡΡΠΈΠΌ ΠΎΡ ΠΌΠ΅Π½Ρ ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΡΠ²Π°ΠΌ. ΠΠ΄Π½ΠΎΠΉ ΠΈΠ· ΡΠ»Π°Π±ΡΡ ΡΡΠΎΡΠΎΠ½ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π½Π° ΠΌΠΎΠΉ ΡΡΠ±ΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ Π²Π·Π³Π»ΡΠ΄, Π±ΡΠ» ΠΌΠΎΠ΄Π΅ΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠ΅Π» ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΌΠΎΠ΄Π΅ΠΌΠ°ΠΌΠΈ, ΠΈ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ Π²ΡΠ΄Π΅Π»ΡΠ²Π°Π» ΡΠ°ΠΊΠΈΠ΅ ΡΠΎΡΡΠ΅Π»Ρ. ΠΠ»Ρ Π΄Π°Π½Π½ΡΡ ΡΠ΅Π»Π΅ΠΉ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π³ΡΠΎΠΌΠ°Π΄Π½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄ΡΡΠ³ΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΌΠΎΠ΄Π΅ΠΌΠΎΠ², ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠ½ΠΈ ΡΠΆΠ΅ ΠΈΠΌΠ΅ΡΡ ΡΠΎΡΠΌΠ°Ρ Mini PCI-e ΠΈ ΡΡΠ°Π²ΡΡΡΡ Π²Π½ΡΡΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΈ ΠΈΡ ΡΠΈΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°ΡΡ. ΠΠΎ ΡΡΠΎ ΡΠΆΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌ Π΄ΡΡΠ³Π°Ρ ΠΈΡΡΠΎΡΠΈΡ. ΠΡΠΎΠ΅ΠΊΡ Π±ΡΠ» ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΠΈ Π±ΡΠ» ΠΎΡΠ΅Π½Ρ ΡΠ°Π΄, ΡΡΠΎ ΡΠ΄Π°Π»ΠΎΡΡ Π² Π½Π΅ΠΌ ΠΏΠΎΡΡΠ°ΡΡΠ²ΠΎΠ²Π°ΡΡ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com