คงเหลือโมเด็ม GSM USB โดยใช้ USSD


8

มีเครื่องมือหรือคำสั่งบางอย่างที่ฉันสามารถใช้ส่งรหัส USSD เพื่อตรวจสอบยอดเงินคงเหลือและข้อมูลของ GSM SIM การ์ดในโมเด็ม USB ของฉัน (ดองเกิลบรอดแบนด์มือถือ) หรือไม่?

คำตอบ:


7

แอพเหล่านี้เป็นแอพที่รองรับการตรวจสอบยอดคงเหลือ USSD:

ผู้จัดการเติมเงิน

ผู้จัดการเติมเงิน

Prepaid Managerเป็นแอปเพล็ตสำหรับเดสก์ท็อป GNOME ที่ให้คุณตรวจสอบและเติมยอดคงเหลือของซิมการ์ดเติมเงินมือถือระบบ GSM มันเป็นแอพที่เรียบง่ายและเรียบง่ายพร้อมการตรวจสอบยอดคงเหลือ USSD และการเติมเงินเป็นสิ่งที่ทำได้ แต่ในทางกลับกันมันเป็นแอพพลิเคชั่นที่เก่ามากและยังไม่ได้รับการอัพเดทใหม่ ๆ ในระยะเวลานาน และหากผู้ให้บริการของคุณจะไม่ได้รับการสนับสนุนคุณจะต้องกำหนดค่าด้วยตนเองตามที่อธิบายไว้ในหน้าแรกของพวกเขา ในการติดตั้งคลิกที่นี่:

แอพ Prepaid Manager บนซอฟต์แวร์ Ubuntu

หรือเรียกใช้คำสั่งต่อไปนี้:

sudo apt install prepaid-manager-applet

Modem Manager GUI

Modem Manager GUI

Modem Manager GUI เป็นโซลูชั่นที่สมบูรณ์ในการจัดการและตรวจสอบโมเด็มที่ใช้เครือข่ายมือถือ มันเต็มไปด้วยคุณสมบัติมากมายและการสนับสนุน USSD เป็นเพียงหนึ่งในนั้น สำหรับรายการที่สมบูรณ์ของคุณสมบัติเยี่ยมชมเว็บไซต์อย่างเป็นทางการของพวกเขา ในการติดตั้งคลิกที่นี่:

แอพ Modem Manager GUI บนซอฟต์แวร์ Ubuntu

หรือเรียกใช้คำสั่งต่อไปนี้:

sudo apt install modem-manager-gui

V Mobile Broadband

V Mobile Broadband

V Mobile Broadbandเป็นซอฟต์แวร์Vodafone Mobile Connectดั้งเดิมสำหรับ Linux เขียนใหม่เพื่อให้เข้ากันได้กับ Network Manager โดยทีมงาน Betavine Connection Manager ของโอเพ่นซอร์สของ Vodafone น่าเสียดายที่ตอนนี้ดูเหมือนว่าจะยังไม่ได้รับการบำรุงรักษามากนักและไม่สามารถใช้งานได้ใน Ubuntu repos อย่างไรก็ตามคุณอาจลองเสี่ยงโชคในการสร้างโครงการจากแหล่งที่มา ตรวจสอบหน้า GitHub ของพวกเขา

คำเตือน : v-mobile-broadbandขึ้นอยู่กับซึ่งแทนที่ค่าเริ่มต้นของwader Ubuntu modemmanagerดังนั้นหากคุณประสบปัญหากับการตั้งค่าใหม่และตัดสินใจถอนการติดตั้งv-mobile-broadbandอย่าลืมติดตั้งmodemmanagerแพ็คเกจใหม่


แหล่งที่มา


V Mobile Broadband: 12-Dec-14: ข้อผิดพลาด: W: ล้มเหลวในการเรียกppa.launchpad.net/crass/v-mobile-broadband/ubuntu/dists/trusty/ … 404 ไม่พบ ยอมแพ้หรือเปล่า
Evergreen

@evergreen ไม่มีโครงการเพราะไม่ตาย PPA ยังคงผลักดันการปรับปรุงสำหรับ12.04LTS "แม่นยำ" อย่างไรก็ตามยังไม่ได้อัปเดตสำหรับ"Trusty" 14.04LTS ขึ้นไป
HEXcube

น่าเสียดายที่ไม่มีงานเหล่านี้สำหรับ 16.04 ขึ้นไป
Anwar

3

คุณสามารถใช้ยูทิลิตีบรรทัดคำสั่งgammuเพื่อจุดประสงค์นี้ หากรหัส USSD เพื่อรับยอดเงินของคุณคือ (พูด) * 901 # คุณจะดำเนินการ:

gammu getussd "*901#"

สำหรับการติดตั้งและการตั้งค่าคำแนะนำและรายละเอียดเพิ่มเติมดูที่นี่


1

คุณสามารถใช้คำสั่ง AT โดยตรงเพื่อค้นหายอดเงินของคุณผ่าน USSD เพื่อที่ใช้โปรแกรมใด ๆ สถานีอนุกรมที่ช่วยให้คุณติดต่อสื่อสารกับโมเด็มของคุณโดยตรง ( putty, minicomฯลฯ )

ฉันเลือกatinoutเพราะมันรวมเข้ากับบรรทัดคำสั่งอย่างดี ก่อนอื่นให้คุณติดตั้ง:

sudo apt-get install ruby-ronn;
git clone git://git.code.sf.net/p/atinout/code atinout;
cd atinout;
make;
sudo checkinstall make install;

จากนั้นหากคุณใช้ ModemManager (ค่าเริ่มต้นภายใต้ Ubuntu Linux) คุณอาจต้องปิดการใช้งานก่อนเพื่อให้atinoutสามารถเข้าถึงโมเด็มของคุณ:

sudo stop modemmanager;

ตอนนี้ในการส่งรหัส USSD เพื่อสอบถามยอดคงเหลือไปยังเครือข่าย (พูด * 901 #) และแสดงผลลัพธ์คุณจะใช้คำสั่งนี้:

atinout - /dev/ttyUSB1 - < <(echo "AT+CUSD=1,\"*901#\",15") && sleep 4 && \
atinout - /dev/ttyUSB1 - < <(echo "AT");

/dev/ttyUSB1นี้อนุมานว่าโมเด็มของคุณที่ ATคำสั่งในครั้งที่สองatinoutคำสั่งเป็นเพียงเพื่อให้ได้คำตอบที่ USSD sleepที่ไม่พึงประสงค์แสดงเป็นผลข้างเคียงซึ่งควรจะมาถึงหลังจากที่

สำหรับกรณีที่การสอบถามยอดเงินของคุณต้องมีการดำเนินงานเมนู USSD A: เรื่องนี้ก็เป็นไปได้ด้วยatinout, ดูคำตอบนี้


1

modem-manager-guiคุณสามารถทำพวกเขากับแพคเกจ แต่มันใช้ได้สำหรับ 13.10 เท่านั้น ในรุ่นอื่น ๆ modemmanagerที่คุณต้องจัดการกับพวกเขาในเทอร์มิกับแพคเกจ

หากคุณอยู่ใน Ubuntu 13.10:

sudo apt-get install modem-manager-gui modemmanager

ใน Ubuntu รุ่นอื่นคุณสามารถทำได้ด้วยแอพพลิเคชั่น prepaid-manager-applet

sudo apt-get install prepaid-manager-applet

0

คุณสามารถใช้เครื่องมือบรรทัดคำสั่ง Linux gsm-ussdเพื่อส่งรหัส USSD รับคำตอบและแม้แต่นำทางเมนู USSD (แม้ว่ามันจะไม่เสถียร / ใช้งานได้สำหรับฉัน)

สำหรับการติดตั้งและการกำหนดค่ารายละเอียดคำแนะนำดูที่นี่ รุ่น 0.4 แพคเกจ Debian ที่นำเสนอมีการติดตั้งเป็นเวอร์ชันล่าสุดสาขา dev

หากรหัส USSD เพื่อรับยอดเงินของคุณคือ (พูด) * 901 # และโมเด็มของคุณคือ/dev/ttyUSB1คุณจะดำเนินการสิ่งนี้เพื่อส่งรหัส USSD แบบง่าย ๆ และแสดงคำตอบของเครือข่าย (ไม่ส่งผลในเมนู):

gsm-ussd -m /dev/ttyUSB1 "*901#"

0

คุณสามารถใช้mmcliไคลเอนต์บรรทัดคำสั่งของ ModemManager ที่เป็นค่าเริ่มต้นของ Ubuntu เพื่อส่งรหัส USSD และรับคำตอบ:

  1. mmcli -Lเริ่มต้นโดยรายชื่อโมเด็มของคุณ: /org/freedesktop/ModemManager1/Modem/0นี้จะแสดงเส้นทางอุปกรณ์โมเด็มเช่น หมายเลขที่อยู่ท้ายสุดคือดัชนีโมเด็มจำได้

  2. เปิดใช้งานโมเด็ม (สมมติว่าดัชนีโมเด็มของคุณคือ 0): mmcli -m 0 -e

  3. ส่งคำขอ USSD และแสดงคำตอบ สมมติว่ารหัส USSD ของผู้ให้บริการเครือข่ายของคุณเพื่อรับยอดคงเหลือคือ * 901 # คำสั่งจะเป็น:

    mmcli -m 0 --3gpp-ussd-initiate="*901#"
    

สำหรับกรณีที่การสืบค้นยอดคงเหลือของคุณต้องใช้เมนู USSD: เป็นไปได้ด้วยmmcliดูคำตอบนี้


ในวันที่ 16.04 คำสั่งจะส่งคืนสิ่งนี้error: couldn't initiate USSD session: 'GDBus.Error:org.freedesktop.ModemManager1.Error.Core.Unsupported: Operation not supported.'
Anwar

0

สำหรับฉันทั้ง ModemManager-based solution และgammuทำงานไม่ถูกต้องกับการตอบสนอง USSD แบบหลายบรรทัด; เช่นผู้ประกอบการของฉันมีคำสั่ง USSD *104#ซึ่งมันตอบสนองสิ่งที่ต้องการ:

You have:
2.07 GB of traffic, valid until N
47 minutes

มันน่าผิดหวังที่เห็นเพียงบรรทัดแรกที่ไร้ประโยชน์: You have:.

ในที่สุดฉันก็พบวิธีแก้ปัญหาด้วยpicocomและคำสั่ง AT ด้วยตนเอง ดังนั้นทุกครั้งที่ฉันต้องการตรวจสอบยอดคงเหลือของฉันฉันต้องทำสิ่งต่อไปนี้:

ก่อนอื่นให้หยุดจัดการโมเด็ม:

$ sudo stop modemmanager

ตอนนี้คุณต้องรู้พอร์ตโมเด็มของคุณ /dev/ttyACM0ในกรณีของฉันมันเป็น

หากคุณไม่รู้จักพอร์ตลองทำสิ่งนี้:

for n in `ls /sys/class/*/*{ACM,wdm}*/device/interface`;do echo $(echo $n|awk -F '/' '{print $5}') : $(cat $n);done

Mobile Broadband Modemและมองหารายการที่มี เช่นผลลัพธ์ของฉันมีลักษณะดังนี้:

ttyACM0 : F5521gw Mobile Broadband Modem
ttyACM1 : F5521gw Mobile Broadband Data Modem
ttyACM2 : F5521gw Mobile Broadband GPS Port
cdc-wdm0 : F5521gw Mobile Broadband Device Management
cdc-wdm1 : F5521gw Mobile Broadband USIM Port

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการรับพอร์ตที่ถูกต้องโปรดดูที่ลิงก์นี้: https://gist.github.com/heyalexej/cc6c97b1ea42736b3ff7

จากนั้นใช้ picocom เพื่อเชื่อมต่อกับพอร์ตของคุณ:

$ sudo picocom /dev/ttyACM0

คุณควรเห็นสิ่งนี้:

picocom v1.7

port is        : /dev/ttyACM0
flowcontrol    : none
baudrate is    : 9600
parity is      : none
databits are   : 8
escape is      : C-a
local echo is  : no
noinit is      : no
noreset is     : no
nolock is      : no
send_cmd is    : sz -vv
receive_cmd is : rz -vv
imap is        : 
omap is        : 
emap is        : crcrlf,delbs,

Terminal ready

*EMRDY: 1

(หากคุณไม่เห็นสิ่งนี้*EMRDY: 1อาจหมายความว่าคุณไม่ได้หยุด Modem Manager ดูด้านบน)

จากนั้นป้อน:

AT+CUSD=1,"*104#"

และหลังจากผ่านไปหลายวินาทีคุณควรได้รับคำตอบซึ่งอาจเป็นหลายบรรทัด:

+CUSD: 0,"You have:
2.07 GB of traffic, valid until N
47 minutes

",15

OK

หากต้องการออกจาก picocom ให้ใช้ Ctrl-A Ctrl-X

และเริ่มตัวจัดการโมเด็มอีกครั้ง:

$ sudo start modemmanager

-1

คุณสามารถใช้โซลูชัน PBX เสมือนโอเพ่นซอร์ส FreeSwitchพร้อมกับส่วนขยายGSMopenเพื่อส่งคำสั่ง USSD [ แหล่งที่มา ]

ตัวอย่างเช่นหากรหัส USSD เพื่อรับยอดเงินของคุณคือ (พูด) * 901 # คุณจะดำเนินการ:

chat SMS|interface3|ussd|*901#

There are simpler solutions in the other answers of course, but in case you use GSMopen anyway (… for example because it's the only way to do GSM voice calls under Linux …).

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.