Interfacing with a device that has no keys and no screen, and only has limited, intermittent support for voice can be tricky.
Using AT commands for everything is also inconvenient, more so if you're on the go without a physical keyboard.
This firmware implements a fake phone number you can interact with, directly from your preferred chat application. From 0.6.4 onwards, the modem will send you a message the first time you flash it if you have a SIM installed.
If you have not received that message for any reason, then you can send the commands to the following number: +223344556677
.
NOTE: You need to have an active SIM for this to work, as ModemManager/oFono won't even try to connect to the modem's Wireless Messaging Service if there's no SIM in the modem
name
: Show modem's nameusername
: Show the name used by the modem to talk to youuptime
: Show current uptime for the modemload
: Show modem's load averageversion
: Returns current firmware and ADSP firmware versionusbsuspend
: Returns USB suspend state (a little obvious as if it can answer it means it's active, but sometimes used for debugging)memory
: Get used/free memoryget reconnects
: Get the number of times ModemManager/oFono lost connection to the modem and did a 'dirty-reconnect' (didn't do normal release from the modem before disconnecting)net report
: Show advanced network data (**needs to have tracking enabled)
caffeinate
: Prevent USB port suspend from the modem sidedecaf
: Allow USB port suspend (default state, useful whencaffeinate
was issued)reboot
: Reboots the modemoff
: Shuts down the modem entirely (Need to restart eg25-manager or reboot the phone to power it back on)help
: List all available commands
get history
: (WIP) Get history of commands sent to the modemget log
: (Not recommended for normal use) Dump Openqti's log through the chatget dmesg
: (Not recommended for normal use) Dump Modem's kernel log through the chatenable sms logging
: Tries to process every SMS going through the modem and logs it in openqti.logdisable sms logging
: Stops logging messages to openqti.log
net stats
: Get statistics from the RMNET control port (where QMI messages flow between modem and host)gps stats
: Same as before but for the GPS capability (both the NMEA port and QMI based location gathering). Useful if you want to find out if something is using GPS without your knowledgegsm signal
: Gets you information about the current network type and signal level
enable adb
: Enable ADB support (resets the USB port for a second)disable adb
: Disable ADB (resets the USB port for a second)enable tracking
: Enables cell data tracking. This keeps data of the connected and neighbour cellsdisable tracking
: Disables cell data trackingenable persistent logging
: Enables storing logs to/persist/
disable persistent logging
: Disables persistent storageenable sms logging
: Enables logging of every message sent/received toopenqti.log
disable sms logging
: Disables SMS loggingset user name [NEWNAME]
: Tell the modem the name you want it to use when calling youset name [NEWNAME]
: Give the modem a new name
call me
: Calls you back right awaycall me in [SECONDS]
: Modem will call you back in X secondsremind me [at/in] HH[:MM] [OF SOMETHING]
: Use it to set a reminder *Limitations [1]- Examples:
remind me at 08:30 Remember to join the meeting
will call you at half past eight and speak to you "Remember to join the meeting"remind me in 1 do some important thing
: Will call you back in one hour and tell you "do some important thing"
- Examples:
wake me up [at/in] HH[:MM]
: Use it to call you back at/in and tell you "It's time to wake up [YOUR NAME]"list tasks
: Show pending tasks (reminders and wake up calls)delete task [TASK_ID]
: Remove the ID of a pending tasklist tasks
: Shows scheduled tasksdelete task X
: Removes the task from the list
enable cell broadcast
: Enables receiving of all alerts. Any cell broadcast message received will show in the modem chatdisable cell broadcast
: Disables all cell broadcast messages. Maximum priority messages may still get received
callwait auto hangup
: If you're in a call and someone calls you, automatically hang up and send a message with the phone number that calledcallwait auto ignore
: If you're in a call and someone calls you, bypass the notification to the host and send you a message (so ModemManager / oFono don't know there's a second call)callwait mode default
: Let the host handle two simultaneous calls and do nothingenable custom alert tone
: Emit a local dialing indication (for carriers that don't provide one)disable custom alert tone
: Use the local dialing indication from the network if it provides one (otherwise you'll hear silence until the other side picks up)
WARNING: Call recording may be forbidden in some jurisdictions. Make sure it is legal to record calls in your country before using these functions (https://en.wikipedia.org/wiki/Telephone_call_recording_laws)
record and recycle calls
: Records every call and deletes it after you hang up, unless you sendrecord this call
while in the middle of it to tell it to keep it in the default storage (*1)record all calls
: Records all calls and keeps it in the default storage (*1)stop recording calls
: Disables call recordingrecord this call
: Records the current established call, ifrecord and recycle calls
is active, the call will be stored from the beginning, otherwise it will record from the moment it acknowledged the commandrecord next call
: The modem will record the next outgoing or incoming callcancel record next call
: Cancels the previous command
Calls will be stored in /tmp
if persistent logging is disabled, or to /persist
if it is enabled.
There's a limited space available in the modem, so if openqti is running out of space it will first try to remove old logs from the storage, then it will delete every other recording except the current one, and if storage is really too low, it will stop the recording entirely. To avoid data loss, especially if you are recording every single call, you should set up a script that periodically retrieves the calls and frees up the space for new ones. I've put a proof of concept script in tools/helpers/retrieve_recordings
in this repo, but contributions are always welcome