Hello,
I am trying to assign a static IP address to the erthernet interface on my esp32. I am using the following code:
tcpip_adapter_ip_info_t ipInfo;
IP4_ADDR(&ipInfo.ip, 192,168,128,200);
IP4_ADDR(&ipInfo.gw, 192,168,128,100);
IP4_ADDR(&ipInfo.netmask, 255,255,255,0);
tcpip_adapter_set_ip_info(ESP_IF_ETH, &ipInfo);
When I run this, no IP addresses are set, and all the above parameters remain 0.0.0.0
Does anyone have any experience with this?
Assign a static IP address to the the ethernet Port
-
- Posts: 5
- Joined: Wed Oct 25, 2017 9:32 pm
Re: Assign a static IP address to the the ethernet Port
Code: Select all
esp_err_t ret = ESP_OK;
tcpip_adapter_ip_info_t ipInfo;
// myIp -> structure that save your static ip settings
inet_pton(AF_INET, myIp.ip, &ipInfo.ip);
inet_pton(AF_INET, myIp.gateway, &ipInfo.gw);
inet_pton(AF_INET, myIp.netmask, &ipInfo.netmask);
tcpip_adapter_init();
ret = tcpip_adapter_dhcpc_stop(TCPIP_ADAPTER_IF_ETH); // ret=0x5000 -> tcpip_adapter_invalid_params, very old esp-idf didn't implementated this yet.
ESP_LOGI(TAG, "dhcp client stop RESULT: %d", ret);
tcpip_adapter_set_ip_info(TCPIP_ADAPTER_IF_ETH, &ipInfo);
esp_event_loop_init(system_event_cb, NULL);
eth_config_t config = DEFAULT_ETHERNET_PHY_CONFIG; // Set the PHY address in the example configuration
config.phy_addr = CONFIG_PHY_ADDRESS;
config.gpio_config = eth_gpio_config_rmii;
config.tcpip_input = tcpip_adapter_eth_input;
#ifdef CONFIG_PHY_USE_POWER_PIN
// Replace the default 'power enable' function with an example-specific
// one that toggles a power GPIO.
config.phy_power_enable = phy_device_power_enable_via_gpio;
#endif
ret = esp_eth_init(&config); // Init the ETH interface of ESP32
if (ret == ESP_OK) {
ESP_LOGI(TAG, "ETH interface get inited correctly!!!");
esp_eth_enable();
} else {
ESP_LOGE(TAG, "ETH interface inited not correct!");
}
Gfast2
-
- Posts: 1
- Joined: Fri May 24, 2019 6:26 pm
Re: Assign a static IP address to the the ethernet Port
Hello,
I have the same problem, I cannot set static IP:
failed: esp_err_t 0x5001 (ESP_ERR_TCPIP_ADAPTER_INVALID_PARAMS)
I use ESP-IDF v4.0-dev-478-gdf61612 and ESP32 DevKit V1
I can see that function: tcpip_adapter_dhcps_stop can work stil only for TCPIP_ADAPTER_IF_AP:
Is my version too old? I work on the master branch.
I have the same problem, I cannot set static IP:
failed: esp_err_t 0x5001 (ESP_ERR_TCPIP_ADAPTER_INVALID_PARAMS)
I use ESP-IDF v4.0-dev-478-gdf61612 and ESP32 DevKit V1
Code: Select all
void eth_init()
{
tcpip_adapter_init();
ESP_ERROR_CHECK(esp_event_loop_init(eth_event_handler, NULL));
ESP_ERROR_CHECK(tcpip_adapter_dhcps_stop(TCPIP_ADAPTER_IF_ETH));
tcpip_adapter_ip_info_t info;
memset(&info, 0, sizeof(info));
IP4_ADDR(&info.ip, 192, 168, 1, 100);
IP4_ADDR(&info.gw, 192, 168, 1, 1);
IP4_ADDR(&info.netmask, 255, 255, 255, 0);
ESP_ERROR_CHECK(tcpip_adapter_set_ip_info(TCPIP_ADAPTER_IF_ETH, &info));
eth_config_t config = DEFAULT_ETHERNET_PHY_CONFIG;
config.phy_addr = CONFIG_PHY_ADDRESS;
config.gpio_config = eth_gpio_config_rmii;
config.tcpip_input = tcpip_adapter_eth_input;
config.clock_mode = CONFIG_PHY_CLOCK_MODE;
#ifdef CONFIG_PHY_USE_POWER_PIN
/* Replace the default 'power enable' function with an example-specific one
that toggles a power GPIO. */
config.phy_power_enable = phy_device_power_enable_via_gpio;
#endif
ESP_ERROR_CHECK(esp_eth_init(&config));
ESP_ERROR_CHECK(esp_eth_enable()) ;
}
Code: Select all
/* only support ap now */
if (tcpip_if != TCPIP_ADAPTER_IF_AP || tcpip_if >= TCPIP_ADAPTER_IF_MAX) {
-
- Posts: 1
- Joined: Tue May 28, 2019 2:17 pm
Re: Assign a static IP address to the the ethernet Port
Make sure you are disabling the client (dhcpc). Your code is disabling the server (dhcps)
-
- Posts: 1
- Joined: Mon Dec 28, 2020 9:54 am
Re: Assign a static IP address to the the ethernet Port
This is working.
Put the code below: eth_netif = esp_netif_new(&cfg); in the cmd_ethernet.c file register_ethernet() function.
Put the code below: eth_netif = esp_netif_new(&cfg); in the cmd_ethernet.c file register_ethernet() function.
Code: Select all
ESP_ERROR_CHECK(esp_netif_dhcpc_stop(eth_netif));
char* ip= "*.*.*.*";
char* gateway = "*.*.*.1";
char* netmask = "255.255.255.0";
esp_netif_ip_info_t info_t;
memset(&info_t, 0, sizeof(esp_netif_ip_info_t));
info_t.ip.addr = esp_ip4addr_aton((const char *)ip);
info_t.gw.addr = esp_ip4addr_aton((const char *)gateway);
info_t.netmask.addr = esp_ip4addr_aton((const char *)netmask);
esp_netif_set_ip_info(eth_netif, &info_t);
ESP_ERROR_CHECK(esp_eth_set_default_handlers(eth_netif));
Who is online
Users browsing this forum: Baidu [Spider], Google [Bot] and 190 guests