zephyr/samples/net/cellular_modem
Bjarki Arge Andreasen 84e9f52fc4 samples: net: cellular modem: Select modem backend statistics
select modem backend statistics and enable shell in cellular
modem sample. This will help advertise the feature, and can
help quickly identify issues with to small buffers.

Signed-off-by: Bjarki Arge Andreasen <bjarki@arge-andreasen.me>
2024-05-20 14:40:06 +03:00
..
boards samples: cellular: fix dtsi path in overlay 2024-05-17 14:40:15 -05:00
server samples/net: Add cellular modem sample 2023-08-30 13:48:51 +02:00
src samples: net: Change to use CONFIG_POSIX_API 2024-03-27 13:40:13 -05:00
CMakeLists.txt samples/net: Add cellular modem sample 2023-08-30 13:48:51 +02:00
prj.conf samples: net: cellular modem: Select modem backend statistics 2024-05-20 14:40:06 +03:00
README.rst samples: net: cellular_modem: small fixes/improvements 2024-03-04 22:13:14 +01:00
sample.yaml samples/net: Add cellular modem sample 2023-08-30 13:48:51 +02:00

.. zephyr:code-sample:: cellular-modem
   :name: Cellular modem

   Use a cellular modem to communicate with a UDP server.

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:

.. code-block:: devicetree

   /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=""``.