Yes, you’re correct. Once a connection finishes closing, is aborted, or times out and is closed automatically, the connection is free to be used again. In lwIP lingo, these are called PCB’s. See also:...
To which circular buffer do you refer? Which library or source file?
If you run the iperf (v2) app on your computer, and the IPerfServer example on the Teensy, you'll likely see something exceeding 70 or 80Mbps over...
I’ll add this note for future readers: the reason it’s only able to accept 8 connections is because the connections are never closed, and because the library is configured by default for up to 8 connections. If there...
Fun fact: the link status is polled approximately 8 times a second in QNEthernet.
I’ve used many Teensy 4.1s with networking programs and haven’t seen issues like this, so I’m fairly certain it’s not likely to be the...
I should have said, "nothing actually processes a connection" because the connections are technically accepted under the covers, it's just that your program does nothing with that information.
I'm hosting another right now if anyone's interested. I'll be on for the next half hour or so, and longer if anyone joins.
Meeting link: https://meet.google.com/tsd-eapa-xnb
I'm having some confusion because on one hand, your test program doesn't accept client connections nor reads from any connected clients (because nothing is connected), but on the other, you describe "all connected...
I'm wondering what any ramifications I haven't thought of would be to changing the internal "write error" type from `char` to `int`. The API uses an `int`, as does the internal variable in the AVR, ESP32, ESP8266...
I just released 0.19.0. The changes:
### Added
* Added `Ethernet.loop()` calls to the `EthernetClient::write()` functions when
the send buffer is full.
* Added Ethernet hardware detection to support (well,...
Yep, that's fine. It merely looks at what's in the library's library.properties file, and `lwip-master` is simply based on top of the current `master`, which is also currently at 0.19.0-snapshot. I didn't change that...
There. I just changed `EthernetUDP::send()` to return an `int` and pushed to the GitHub repo (https://github.com/ssilverman/QNEthernet). Could you retry and post which error code (the return value from `send()`) you...
I can confirm that `EthernetUDP::send()` does just about the exact same thing as beginPacket()/write()/endPacket(). The difference being you're using less internal memory with `send()` (there's a `std::vector` allocated...
@sicco First, thanks for engaging. Concurrency is hard to get right and I appreciate the discussion. I'm open to be shown new details or flaws in my thinking I haven't thought of. Here's my view of the system; please...
I tried the `lwip-master` branch myself and I think I know why you're not getting an IP address. Try changing the `kDHCPTimeout` value to 15 or 20 seconds. 10 seconds may not be long enough. It was a little slower with...
@sicco I've looked at this some more and I don't think the lack of synchronization here is a problem. The library is not asynchronous, so a lock isn't needed. All the input processing happens from `Ethernet.loop()`, and...
I just realized there’s a spelling misunderstanding. :)
“lwIP” stands for “Lightweight IP”. “LWIP” but with the first two letters in small case. Silly non-serif fonts…
That’s great news! Sure, if you have the time to test the other branch, that would be great. Now that I know that the latest v0.19.0-snapshot works much better, I would love to build confidence that the latest lwIP...
I prepared another branch that uses the latest lwIP. Would you mind also trying the `lwip-master` branch? (In addition to `master`.) I want to see if maybe there've been some lwIP fixes since the 2.1.3 release that help.
Which version are you using? If you haven’t tried the latest from GitHub (0.19.0-snapshot), could you try that? There were a couple bugs I fixed since v0.18.0.
I'm glad it helped. Yeah, adding detail like that is always tricky because of the different experience levels of everyone (I try to write here so that there's enough context for newer people — it's also my hope (with a...
Happy to help. The PJRC forum is a very helpful and professional place. I think it's one of the things that makes the products here so amazing: they're well-designed, robust, _and_ there's a very helpful place to go...
(Pro tip: Wrap your code in "CODE" blocks so that it shows up as monospaced and properly formatted. The '#' button on the toolbar also does this for you.)
May I suggest having a look at the 'ServerWithListeners'...
The latest QNEthernet push further reduces RAM1 usage by about 27KiB with the current configuration by moving lwIP's memory pools to RAM2, along with some other hundreds-of-bytes changes.
The latest QNEthernet push further reduces RAM1 usage by about 27KiB with the current configuration by moving lwIP's memory pools to RAM2, along with some other hundreds-of-bytes changes.
What I’m gathering from you is there’s no crash or hang. I’m not certain where your program is stopping. What does the current code look like, and where exactly is it apparently freezing? For example, if the program...
Some questions: Where exactly does it freeze? If it’s actually crashing, does the Teensy restart? What does printing the CrashReport show at program start?
I’m curious, is it possible that groups of packets come in immediately, one after the other? This is what I was seeing with pixel data (eg. sACN). It’s why I added a “queue size” parameter to another...
The chip the Teensy 4 uses includes 4 bullt-in quadrature decoders (i.MX RT1062). See the chip docs (https://www.pjrc.com/teensy/IMXRT1060RM_rev3.pdf) or this library:...
There's no recording. I'm going to hold another one from now until about 4pm (UTC-8) today (22-Feb-2023), or whenever I have to stop. Same meeting link.
Update: I plan to be on here for another hour or so (until...
I'm trying an experiment. What better way to learn a subject and to be more community-involved than giving instruction on it? I miss giving workshops, so I've just created a Google meeting where I can do some screen...
You could just read from one stream and write to the other. For really high data rates, you could also optionally add some flow control on the serial side. I don’t think you really need to dive into PPP.
Is your PC...
I first looked at the existence of embedded JS when I learned that the PixelBlaze product can program LED patters in JS. I think the designer of that product wrote his own interpreter, but I think there’s systems that...
I'm not certain IPerfServer works with iperf3. See if you can get v2 working instead. To glean the protocol, I had to read a bunch of mystery code from different places. At the time I wrote that example, I couldn't find...
The IPerfServer example is designed to work with the `iperf` command. (I use a Mac, and used `brew` to install it. I currently have v2.1.8.) It's designed for a specific protocol; that's why you're seeing those strange...
I just released v0.18.0. The changes:
### Added
* Added a "Notes on ordering and timing" section to the README.
* Added a README section that discusses `EthernetClient::connect()` and its
return values.
*...
I think the C terminology you’re looking for is declarations and definitions. The declarations are often in a header file, and definitions are often in the C or C++ files.
Here’s another approach: use Teensy 4.1’s wired Ethernet (may I suggest the QNEthernet library) and then plug that into a little wireless bridge configured for your network. You’ll need to get and assemble an Ethernet...
You probably already saw this, but here’s a link directly to my last PR comment (I don’t want it to get lost in the shuffle since it fixes my original LTO “fix”), to make your life easier:...
I fixed it via the discussion in this report: https://github.com/ssilverman/TeensyDMX/issues/20
In summary, some of the state management was only doing bit changes and not completely setting the CTRL register. This...