STM32 gotchas
105. Clicked ETH/USB in CubeIDE/CubeMX, and it does not work.

Microcontroller manufacturers go to great lengths to make their products attractive to users. One way how they do this is, that they prepare environments - libraries, IDEs, point-and-click configuration utilities - which are designed to look programming microcontrollers easy. This then includes also very complex interfaces such as ethernet/TCP/IP and USB.

These are incredibly complex interfaces with multiple layers, and with many interactions with hardware, other pieces of software and the whole slew of various devices they connect to. As a consequence, there are also millions of ways how they can break down. It should be understood, that this is not primarily fault of badly designed configuration utilities or buggy underlying firmware, although that's the prevailing view. But the truth is much simpler: there are just too many potential points of failure, which are outside of scope of those, who wrote those utilities and firmwares.

So, it's no wonder, that users often come to places like the STM32 forums with the question similar to the title of this article. There is no good answer to this question, as there are too many things which could have gone wrong, and only the user can find out, what was the problem.

While the genuine answer is - just don't use the pre-chewed version, go out and write your own, maybe inspired by, or partially adopting, what's available - this indeed takes lots of effort, learning, reading, and lots and lots of time. So, it may be worth try and fix the existing "clicked-out" version.

So here are some simple hints, what to try: