I’m working with the Golioth Firmware SDK (main) and using the FUOTA example with a SIMCOM SIM7080 modem on the 1NCE network. My device gets an IP address assigned on the 1NCE admin interface, but it seems stuck in the DHCP process when trying to establish a connection.
Configuration
Here are the relevant parts of my prj.conf:
# Golioth configuration
CONFIG_GOLIOTH_FIRMWARE_SDK=y
CONFIG_GOLIOTH_FW_UPDATE=y
CONFIG_GOLIOTH_SAMPLE_COMMON=y
CONFIG_GOLIOTH_SAMPLE_HARDCODED_CREDENTIALS=y
CONFIG_GOLIOTH_SAMPLE_PSK_ID="xxxx"
CONFIG_GOLIOTH_SAMPLE_PSK="xxxx"
CONFIG_GOLIOTH_SAMPLE_DHCP_BIND=y
CONFIG_NET_L2_ETHERNET=y
CONFIG_NET_DHCPV4=y
# Networking
CONFIG_NETWORKING=y
CONFIG_NET_NATIVE=y
CONFIG_NET_L2_PPP=y
CONFIG_NET_IPV4=y
CONFIG_NET_UDP=y
CONFIG_NET_SOCKETS=y
CONFIG_NET_CONTEXT_RCVTIMEO=y
# Modem driver
CONFIG_MODEM=y
CONFIG_MODEM_SIM7080=y
CONFIG_MODEM_SIMCOM_SIM7080_APN="iot.1nce.net"
Code Initialization
My code initializes the modem, sets up Golioth, and attempts to send data:
device_init(modem);
pm_device_action_run(modem, PM_DEVICE_ACTION_RESUME);
// Test send
net_connect();
const struct golioth_client_config *client_config = golioth_sample_credentials_get();
struct golioth_client *client = golioth_client_create(client_config);
golioth_client_register_event_callback(client, on_client_event, NULL);
golioth_fw_update_init(client, _current_version);
k_sem_take(&connected, K_FOREVER);```
Log Output
The modem initializes correctly, attaches to the network, and gets an IP on the 1NCE admin panel, but the DHCP process does not complete:
```00> [00:00:07.699,645] <inf> modem_simcom_sim7080: Manufacturer: SIMCOM_Ltd
00> [00:00:07.753,570] <inf> modem_simcom_sim7080: Model: SIMCOM_SIM7080
00> [00:00:07.808,746] <inf> modem_simcom_sim7080: Revision: 1951B16SIM7080
00> [00:00:07.862,792] <inf> modem_simcom_sim7080: IMEI: 860016049750693
00> [00:00:07.916,534] <inf> modem_simcom_sim7080: IMSI: 901405114763880
00> [00:00:07.970,825] <inf> modem_simcom_sim7080: ICCID: 89882280666147638807
00> [00:00:08.185,089] <inf> modem_simcom_sim7080: CPIN: 1
00> [00:00:11.238,464] <inf> modem_simcom_sim7080: RSSI: -66
00> [00:00:13.241,851] <inf> modem_simcom_sim7080: CGATT: 1
00> [00:00:14.242,431] <inf> modem_simcom_sim7080: Waiting for network
00> [00:00:14.245,727] <inf> modem_simcom_sim7080: CREG: 5
00> [00:00:15.275,421] <inf> modem_simcom_sim7080: PDP context: 1
00> [00:00:15.275,817] <inf> modem_simcom_sim7080: Network active.
00> [00:00:15.276,123] <inf> golioth_samples: Bringing up network interface
00> [00:00:15.276,489] <inf> golioth_samples: Starting DHCP to obtain IP address
00> [00:00:15.276,855] <inf> golioth_samples: Waiting to obtain IP address
00> [00:00:45.278,869] <inf> modem_simcom_sim7080: RSSI: -62
00> [00:01:15.282,165] <inf> modem_simcom_sim7080: RSSI: -62
00> [00:01:45.285,583] <inf> modem_simcom_sim7080: RSSI: -62
The key issue seems to be:
Modem successfully attaches to the network (CGATT: 1, CREG: 5, PDP context active).
Device does not get an IP assigned via DHCP (keeps waiting).
An IP is assigned in the 1NCE admin panel, but it is not usable.
#Questions
Is my modem configuration missing anything for DHCP to work correctly?
Should I use a static IP instead of DHCP for 1NCE?
Are there known issues with SIM7080 overload driver and DHCP in Zephyr/Golioth?
Any help or insights would be greatly appreciated!