V3.21 preview

First impressions:

  • Wifi config was ignored after the update-initiated reboot and the IP address went back to 192.168.4.1. It re-associated with the originally-configured access point after a power cycle.

  • Pattern save doesn’t work consistently – failure rate seems to increase with the size of the pattern, to the point that some won’t save at all (eg. large patterns like ‘DAFTPUNK’). The yellow progress bar goes all the way across, but sometimes it times out and says ‘error’, and other times the render engine says ‘stalled’ and the button gets stuck on “Saving…”.
    I dug out my trusty Arduino programming shield and the console log says:

Start saving program source file SMbzGa8s4j6XbaYqW
Write stalled. wrote: 0 time: 1814ms errno: 28
Write stalled. wrote: 0 time: 3493ms errno: 28
Write stalled. wrote: 0 time: 4980ms errno: 28
Write stalled. wrote: 0 time: 6624ms errno: 28
Write stalled. wrote: 0 time: 8111ms errno: 28
Write stalled. wrote: 0 time: 9801ms errno: 28
Write stalled. wrote: 0 time: 11707ms errno: 28
ERROR Couldn't write data for saving program source file. wrote: 0, length: 8175
Program source file was closed/not opened!
Program source file was closed/not opened!
  • Another failed save:
Start saving program source file QKZ7LpKZmbAXZAtyJ
Wrote chunk of 8175 bytes to program source file in 482ms
Wrote chunk of 8192 bytes to program source file in 790ms
Wrote chunk of 8192 bytes to program source file in 414ms
Write stalled. wrote: 17 time: 4859ms errno: 28
Write stalled. wrote: 17 time: 6561ms errno: 28
Wrote chunk of 8192 bytes to program source file in 8051ms
Write stalled. wrote: 17 time: 3587ms errno: 28
Write stalled. wrote: 17 time: 5274ms errno: 28
Write stalled. wrote: 17 time: 7003ms errno: 28
Write stalled. wrote: 17 time: 8682ms errno: 28
Write stalled. wrote: 17 time: 10319ms errno: 28
ERROR Couldn't write data for saving program source file. wrote: 17, length: 8192
Program source file was closed/not opened!
Program source file was closed/not opened!
Program source file was closed/not opened!
Program source file was closed/not opened!
Program source file was closed/not opened!
Program source file was closed/not opened!
Program source file was closed/not opened!
  • Also saw lots of this in the console output:
[E][WiFiClient.cpp:383] write(): select timed out on fd 57 waiting for writes. attempt 1
[E][WiFiClient.cpp:383] write(): select timed out on fd 57 waiting for writes. attempt 2
[E][WiFiClient.cpp:383] write(): select timed out on fd 57 waiting for writes. attempt 3
[E][WiFiClient.cpp:383] write(): select timed out on fd 57 waiting for writes. attempt 4
[E][WiFiClient.cpp:383] write(): select timed out on fd 57 waiting for writes. attempt 5
[E][WiFiClient.cpp:383] write(): select timed out on fd 57 waiting for writes. attempt 1
[E][WiFiClient.cpp:383] write(): select timed out on fd 57 waiting for writes. attempt 2
[E][WiFiClient.cpp:383] write(): select timed out on fd 57 waiting for writes. attempt 3
[E][WiFiClient.cpp:383] write(): select timed out on fd 57 waiting for writes. attempt 4
[E][WiFiClient.cpp:383] write(): select timed out on fd 57 waiting for writes. attempt 5
[E][WiFiClient.cpp:383] write(): select timed out on fd 57 waiting for writes. attempt 1
[E][WiFiClient.cpp:383] write(): select timed out on fd 57 waiting for writes. attempt 2
[E][WiFiClient.cpp:383] write(): select timed out on fd 57 waiting for writes. attempt 3
[E][WiFiClient.cpp:383] write(): select timed out on fd 57 waiting for writes. attempt 4
[E][WiFiClient.cpp:383] write(): select timed out on fd 57 waiting for writes. attempt 5
broadcastPreviewFrame webSocket.sendBIN failed
broadcast preview had issues, dropping connections. took 5020 success 0
0 Disconnected!

Can’t tell from the wording whether this message is related to the save operation, or if it is referring to preview frames or peer discovery traffic. This particular PB is in a noisy wifi environment with lots of other electronics nearby, but I hadn’t seen this message with previous firmware versions.

  • Pattern previews in editor are great, but way too dim – they’re dimmer than the actual LEDs! Looks like they’re scaled down based on both the “max brightness” config setting and the ‘brightness’ UI slider. Are you still thinking of changing how this works?

  • I’ll try to play around with generating animated PNGs from the expanded preview JPGs, but all the interesting patterns I want to use won’t save as mentioned above.

  • Shadow around the UI sliders after they’ve been clicked is interesting, but misleading unless there really is an ‘input focus’ such that successive keystrokes go to that widget. Do you intend to handle up/down/left/right arrows for incrementing/decrementing the slider value?

  • New UI inputs are a good idea, but the “inputNumber” prefix doesn’t match the others which are all single words in lower case. How about calling it a spinner? Also, is there any way to enforce upper and lower bounds? I remember there was some discussion back in November or December about two-way binding; if the “inputNumber” and “showNumber” widgets were combined, then the input value to the function could be validated/clamped by the function body and the return value would be what gets displayed.

  • New UI outputs: gauge shows full-scale but loses its ‘%’ label if values are greater than 1; if value is negative, the gauge continues to show the previous valid value.

  • When I edited an existing pattern, the editor complained that “time” was an invalid function call; I eventually figured out that it’s because “time” was being used as a variable name elsewhere in the pattern :man_facepalming:. If that’s what “more related implicit globals, no longer causing issues with functions” means, I can see why it’s a good idea.

  • Color picker range bug is fixed; values now go full-scale from 0…1. :+1:

  • LOVE :two_hearts: the case-insensitive pattern list!

1 Like