-
Notifications
You must be signed in to change notification settings - Fork 7.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make use of CMUX (GSM 07.10) protocol for PPPoS and GSM modules (IDFGH-2608) #4688
Comments
I'll add that the pppos example does not work that well. There are some unresolved issues that make using GSM in a comercial product unreliable. But I agree with @GeorgeGkinis that even if pppos worked reliably, not being able to even get the rssi while connected to internet is really bad. |
@GeorgeGkinis Cool, thank you for such a detailed request and I agree it's a nice idea! |
I understand that it will be a complicated task to seamlessly integrate with the network stack. By the way there is work being done relating to multiplexing at the Zephyr project : zephyrproject-rtos/zephyr#22353 (comment) |
I've made PoC with current component to support CMUX as an option and it eventually works. |
Congratulations @d3vil-st It's really nice to have this feature! |
Thanks @d3vil-st for your contribution. I was able to use your component. On top I did some work for better frame handling. Currently I can talk to MQTT servers (TLS enabled as well) without any issues. The Repo can be found here: |
Cool and nice to hear! Did you tried to perform OTA update through this? Cause in my implementation it was able to perform it only in 1 from 10 attempts. |
What is the recommend error handling if esp_dte->buffer[0] != SOF_MARKER or Missing end SOF? |
Is your feature request related to a problem? Please describe.
While the PPPoS example works, the need to exit PPPoS and enter command mode to send
AT commands or read NMEA information from the GSM modems proves difficult and requires alot of task handling.
There is also a delay of 1 second required to successfully exit PPPoS mode.
This proves problematic in practice when frequent measuring/sending of data is required.
Describe the solution you'd like
I would like to see the GSM 07.10 protocol implemented.
Possibly in the modem component.
I suppose the solution could be to implement something like virtual UART ports.
Each Channel would be a different UART virtual device.
This would allow compatibility with libraries to parse NMEA, send/receive AT commands, lwIP/PPPos and other GSM module related libraries.
The following channels are desired :
A clear and concise description of what you want to happen.
I would like to :
A clear and concise description of any alternative solutions or features you've considered.
For the solution I am working at I communicate via MQTTS to the internet.
I can use the modems MQTTS capabilities via AT commands and only connect through PPPoS for OTA firmware updates.
This keeps me in AT Command mode and I can read/send SMS, read NMEA sequences and send telemetry.
If another communication protocol needs to be used like HTTPS, the complexity would increase significantly and also power usage and data overhead,
as disconnecting from PPPoS would break all my connections and handshakes should be performed at each reconnect.
Please give as many details as you can. Include suggestions for useful APIs or interfaces if relevant.
The gsm07.10 protocol IS used within the bluedroid component in ESP-IDF.
More details here
It seems that repurposing that library would be the quickest route to add this feature.
A basic driver is created for linux here.
Beware, the licence is GPL.
The OVMS project has a wonderful implementation of GSM 07.10
and is the only ESP32 compatible solution that I have found so far.
Check this post
Unfortunately it cannot be used directly as a component in ESP-IDF without including a host of other OVMS modules.
Implementing a generic UART based GSM 07.10 protocol for ESP-IDF could really boost it's popularity, as there seems to be no (open source) implementation anywhere for embedded systems...
Additional context
Nothing more to add right now.
The text was updated successfully, but these errors were encountered: