Cellular modem
Overview
This sample consists of a simple application which powers on the modem, brings up the net interface, then sends a packet with pseudo random data to the endpoint test-endpoint.com, which is a publicly hosted server which runs the Python script found in the server folder. DNS is used to look up the IP of test-endpoint.com.
Notes
This sample uses the devicetree alias modem
to identify
the modem instance to use. The sample also presumes that
the modem driver creates the only PPP network interface.
Setup
Start by setting up the devicetree with the required devicetree node:
/dts-v1/;
/ {
aliases {
modem = &modem;
};
};
&usart2 {
pinctrl-0 = <&usart2_tx_pa2 &usart2_rx_pa3 &usart2_rts_pa1 &usart2_cts_pa0>;
pinctrl-names = "default";
current-speed = <115200>;
hw-flow-control;
status = "okay";
modem: modem {
compatible = "quectel,bg9x";
mdm-power-gpios = <&gpioe 2 GPIO_ACTIVE_HIGH>;
mdm-reset-gpios = <&gpioe 3 GPIO_ACTIVE_HIGH>;
status = "okay";
};
};
Next, the UART API must be specified using CONFIG_UART_INTERRUPT_DRIVEN=y
or
CONFIG_UART_ASYNC_API=y
. The driver doesn’t support UART polling.
Lastly, the APN must be configured using CONFIG_MODEM_CELLULAR_APN=""
.