Except if we consider "16x8 blue LED dot matrix screen" to be a display... but then Micro:bit also have a display!
#circuitpython-dev
1 messages ยท Page 6 of 1
This board has a connector so that you can attach a display sold separatly.
Do we consider that a display?
From the documentation:
- "Besides, the onboard easy-to-connect GDI saves the trouble of wiring when using a screen."
- "Comes with expansion board, more convenient to make projects or use with a screen"
It seems that I checked all the board on circuitpython.org that pretend to have a "Display". Maybe I should have asked a few question "In the Weed" first as it is not always clear what should fit or not in that criteria.
I think @deshipu would say that LED matrices are displays. They are low-resolution, but they can be used for gaming and scrolling text display.
We might say "display interface" or "RGB matrix interface". Not sure if the latter is too specific. @makermelissa do you have an opinion here?
One could say that the 5x5 from Micro:bit is a display... so it is hard to put a limit. My idea was that OLED or LCDs are screen, and a bunch of LEDs is not.
I did see the pewpew from @deshipu and I did not react the same way as for Pico:ed or the two mixgo_ce_* so I am obviously biased, maybe the joystic presence made it clear to me that this was a "screen".
Maybe for display it is not such a big deal, if it is visible in the picture, and no...
@lone axle, @proven garnet don't forget that the TLV493D PR you just approved and closed resolved the annotation issue (still open)
Thanks, when submitting a PR you can use magic keywords to link PRs to issues so they close automagically. It's my favorite GitHub trick, especially if you're targeting closing a bunch of issues: https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue
I'm trying to make a custom CircuitPython build, but after the GEN build-BOARD/frozen_content.c step I get a ton of errors saying undefined references to various things, such as this one:
/Applications/ArmGNUToolchain/11.3.rel1/arm-none-eabi/bin/../lib/gcc/arm-none-eabi/11.3.1/../../../../arm-none-eabi/bin/ld: /var/folders/bw/qtb2325502562cq_f96rz0740000gn/T//ccYowQyb.ltrans0.ltrans.o: in function `port_idle_until_interrupt':
<artificial>:(.text.port_idle_until_interrupt+0x2): undefined reference to `common_hal_mcu_disable_interrupts'
did you do make fetch-submodules and in your ports directory make BOARD=... clean?
I think so, let me try those again
also, the version of gcc you are using seems wrong?
thanks, I'll read this and get with it. in the meantime @lone axle left positive remarks on https://github.com/adafruit/Adafruit_CircuitPython_TMP007/pull/13 - I assume it's waiting on review, as it's open/unmerged still?
you need 10.3-2021.07
I'm just using the one built in to MacOS, where would I get the correct version?
I think ESP32-CAM board PR is ready to submit as soon as the creation id PR gets merged. Last thing I wanted to test (onboard sdcard) works and file cleanup done.
Is this like the ARM Cortex-M Toolchain thing?
Do I have the wrong version of that?
seems like it
Using the OS bundled toolchain invariably doesn't work
which port are you building?
QT Py M0
I believe Scott uses 11 (on linux) without issues, but I stayed with gcc-arm-none-eabi-10.3-2021.07
then you want the 10-2020-q4-major
I follow the build instructions for the versions
I don't know if that's your issue though
could also be that mpy-cross needs rebuilding?
yeah the CI goes for gcc-arm-10.3-2021.07
maybe the build instructions should be updated
oh yeah mpy-cross does not compile automatically, you need to build it first
ah wait
you're right, I'm mixing the versions used by architecture
Where do I download the Mac version? I can only find the Linux version.
though locally I do build M0 and M4 with 10.3-2021.07
look more ? it's in there
search for "Mac OS X 64-bit Tarball"
What page is that on?
Oh I see, I clicked on the link at the top saying it was depracated
CircuitPython version
Adafruit CircuitPython 7.3.2 on 2022-07-20; Adafruit QT Py ESP32S2 with ESP32S2
Code/REPL
# Garage Vehicle Space Detection
import alarm
import time
import board
import adafruit_vl53l1x
import neopixel
from digitalio import DigitalInOut, Direction, Pull
from analogio import AnalogIn
# This is the latching relay
unoccupied = DigitalInOut(board.A0)
unoccupied.direction = Direction.OUTPUT
occupied = DigitalInOut(board.A1)
o...
And ended up at the wrong thing
and make -C mpy-cross
on mac I use gmake now, because there are things that don't work with some makefiles, though I mostly had the issue with tinyuf2, don't remember if I had an issue with one of the ports in CP
(a matter of version, I installed it with homebrew)
(don't change it unless you encounter a problem)
Yeah I'm still getting the same errors
@jepler Adding you as a reviewer. Current choice of disabling ulab is based on discussion at end of Monday's meeting.
did you try a normal build first ?
what did you change?
Last push has not spawned a build on y PR. Is there a delay?
I disabled some of the included modules and added some frozen modules
the included modules have dependencies between them, which are not automatically resolved
I reenabled some of them and that seems to have fixed it. Thanks for your help @stuck elbow @jaunty juniper
One could say that the 5x5 from Micro:bit is a display... so it is hard to put a limit. My idea was that OLED or LCDs are screen, and a bunch of LEDs is not.
Generally that's true. We should probably add the display feature to the micro:bit as well. A lot of the example code uses that as one, albeit an extremely low resolution display. Because one of our goals was to keep the feature list to a minimum, I think we should err on the side of calling a bunch of LEDs arranged in a matrix a di...
Hmm, this could be interesting. We'd have to think about how the UI would function.
Did a push last night and have not received a build report yet. Are things delayed. Did it pass? https://github.com/latkinso42/circuitython branch adcdma
actions are in actions: https://github.com/latkinso42/circuitpython/actions
wow! looks like pre-commit success! Thanks!
@solar whale so far this morning I haven't gotten much done but I did verify that the adafruit io code in https://github.com/adafruit/Adafruit_Learning_System_Guides/pull/2246 works with esp32-s3-eye 8.0.0beta1
if I set CIRCUITPY_RESERVED_PSRAM=0 in CIRCUITPY/.env and hit the reset button I get the "generic failure" message
Thanks! I'll have mine tomorrow and wil check it out. I still cant get the Kaluga to do bit the camera and AIO
you're using wifi workflow configured in ~/.env ? There are no wifi-connecting steps in my script
I can switch the order of setting up the camera or io and it works either way
yes -- the web wokflow works fine.
It seems like it is a memory issue on the Kaluga...
Only 2MB PSRAM while I think the EYE has 8MB so it could be
@onyx hinge Have you tried your eye-adafruitio code on a Kaluga?
It looks to me like it "should" just run on a Kaluga without any changes, no?
nope I have not
that's part of the not getting much done yet today
did you try other examples, is it only when you combine with aio that it's not working?
It's also possible that one failure inside esp_camera_init leaves some stuff in a wacky internal state... it might only be cleaned up by hard-resetting the board. I wouldn't be surprised, but I would be dismayed.
I can do image capture OR connect to AIO -- just not both. -- when I try the code I get ```
Adafruit CircuitPython 8.0.0-beta.0-4-g0b2528bc1 on 2022-08-21; Kaluga 1 with ESP32S2
import jepler_eye_adafruitio
Connecting to Adafruit IO
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "jepler_eye_adafruitio.py", line 62, in <module>
File "adafruit_minimqtt/adafruit_minimqtt.py", line 454, in connect
File "adafruit_minimqtt/adafruit_minimqtt.py", line 285, in _get_connect_socket
RuntimeError: Repeated socket failures
in this case it inits the camera first. IF I then do a soft reboot, I can run code that connects to AIO.
@tulip sleet do you have insight into what "Repeated socket failures" actually means?
this code runs ok ```import board
import esp32_camera
c = esp32_camera.Camera(
data_pins=board.CAMERA_DATA,
external_clock_pin=board.CAMERA_XCLK,
pixel_clock_pin=board.CAMERA_PCLK,
vsync_pin=board.CAMERA_VSYNC,
href_pin=board.CAMERA_HREF,
pixel_format=esp32_camera.PixelFormat.JPEG,
i2c=board.I2C(),
external_clock_frequency=20_000_000)
m = c.take()
if m is not None:
print(bytes(m))
@solar whale did changing the amount of reserved RAM up to 1MB as I am using on esp32-s3-eye make a difference?
no -- I even tried up to 1.5Mbyte
OK
if I run the image capture, then if I try my aio test, it also fails with the repeated socket errors unless I do a soft reboot in between
in the jpeg mode the amount of contiguous psram actually needed is pretty small, too. Only a few kB, so it shouldn't matter.
I mean, between 512kB and 1.5MB
and if I swap the order of camera and mqtt init, then the camera fails with the"general Failure"
a quick look at the source pointed at failure to allocate memory as the cause of a "general failure"
that's based on my memory from the other day anyway
for adafruit purposes I am pretty sure my focus is the s3 right this second.
If I don't reserve any memory the camera alwasy fails. The above code works with 512K
so filing a bug with all the best info you have, so this doesn't get lost/forgotten, is going to be helpful down the road.
yes if you reserve 0 it will always always fail
understood -- no problem.
I'll file an issue later today. Thanks.
I need to clean up the examples to make it clear. I'm looking forward to playin thei the S3-Eye.
FYI -- I am using an OV2640 camera.
what has to change if you use a different camera? I don't see where the camera is specified?
I love magic ๐
is it a bad sign when an exception message is the length of a novel?
+ if (common_hal_espidf_get_reserved_psram() == 0) {
+ mp_raise_msg(&mp_type_MemoryError, TRANSLATE(
+ "esp32_camera.Camera requires reserved PSRAM to be set up in CIRCUITPY/.env or by the board definition. Without this setting, constructing a camera will always fail. The specific value required depends on the size of the frambuffer(s) your application uses. Note that a hard reset is required after changing the reserved value in .env.")
+ }
I suppose you could shorten it to RTFM....;-)
.. and disable on devices without psram.
I think it can happen when the remote end closes the connection and we still keep trying
I'd put the fix in the docs, and make this a shorter message
you don't normally get a build report on success, only on failure
no news == good news ๐
Ah..Great. I guess I'm at a loss as to the next steps in the PR process. Sorry for being such a painful noobie.
np, if it passed and you're done, you could ask for reviews
@onyx hinge just FYI -- here is wha I get if I swap the order of the camera and mqtt in the adafruitio code ```Adafruit CircuitPython 8.0.0-beta.0-4-g0b2528bc1 on 2022-08-21; Kaluga 1 with ESP32S2
import jepler_eye_adafruitio
Connecting to Adafruit IO
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "jepler_eye_adafruitio.py", line 62, in <module>
espidf.IDFError: Generic Failure
I will work up a few clear examples and create an issue later today.. no need for you to spend any more time on this today...
Requesting Review. Code works fine for 8-bit 'B' Byte transfers or 16-bit 'H' UINT transfers.
All of us started there. Don't apologise for needing help at any time, but especially in the beginning. ๐
better? ```c
mp_raise_msg(&mp_type_MemoryError, TRANSLATE(
"esp32_camera.Camera requires reserved PSRAM to be configured. "
"See the documentation for instructions.");
that's weird, it should have failed my build because I added a message but didn't "make translate"
@maximkulkin Thanks for your summary. Yes, I agree there is no constructor to use to specify a queue length. If we added it, making it a property (perhaps only settable in boot.py, before USB is configured), seems like the right choice.
One important consideration for us is code size. usb_hid is available on the smallest builds (e.g., SAMD21) because it is so useful. We are always running out of firmware space on these builds, so a fancier API (e.g., queuing) may be too big. That is wh...
I tested with the tip of https://github.com/espressif/esp-idf/tree/release/v4.4, which is later than 4.4.2, released two weeks ago, and I am still seeing this problem, unfortunately.
@deep haven ^^ see above re ESP-IDF 4.4.2 and LC709203F on ESP32-S3; still doesn't work
I think option 1 would be enough to unlock IN report functionality, given the code size constraints.
I will update this PR back to implement option 1.
@edgy flax Just a heads up that the magic keywords should go in the description of the PR - I guess they don't work in the title!
I've looked in the obvious web workflow PRs, but couldn't find... does anyone know where the web workflow code is that connects to wifi automatically from the .env file?
that's not part of the web workflow, that's the autoconnect thingamajig
I mean it is part of the workflow in a sense, but it came before, and doesn't need it
this one I think https://github.com/adafruit/circuitpython/pull/6473
Like #6473, but for Access Point: allow Wi-Fi AP SSID and password to be defined in .env, and if present, start up a Wi-Fi AP automatically. If web workflow is enabled, allow web workflow to operate via the AP.
Some discussion of the motivations is here: . Particularly useful for external (but reasonably trusted) wifi networks, with non-native-USB CircuitPython devices, when a general-purpose computer with serial isn't readily available.
The way I think about it is if somebody is filtering for boards with displays for some project and they saw a few with LEDs would they be okay with having that as an option?
Feel free to discard/close the PR not matching that or maybe let's put the question as "In the Weed" and wait for a decision there.
102504.0
``` lol I thought I had discovered CircuitPython failing at arithmetic though honestly I'm not sure exactly what's happening. ```>>> sum((), ulab.numpy.int16)
104
```makes little sense either
maybe they based it on javascript
Return the sum of a 'start' value (default: 0) plus an iterable of numbers
```so CP is accepting the optional 2nd argument of sum() as a non-kwarg and ulab.numpy.int16 is the number 104
or the ascii code for the letter 'h', naturally
obviously
@tulip sleet - do you have a minute for a consult?
sure
Looking at issue 6735; the problem is that a pulseout value of 0 on the NRF means the timer used to generate interrupts will never fire. Is the best way to handle that to throw an error message, or just ignore a zero value (since it wouldn't generate any pulse anyway)?
i'll look at the doc...
I would say that a pulse width of 0 should just be ignored. One could imagine disabling and enabling a pulse in a particular sequence of pulse widths by zeroing it out or not
OK, will do.
thanks for working on this!
np
CircuitPython version
Adafruit CircuitPython 8.0.0-beta.0-6-g6572f8591-dirty on 2022-08-23; Adafruit Feather ESP32 V2 with ESP32
Code/REPL
import hashlib
print(dir(hashlib.new("sha1")))
Behavior
The REPL hangs until a hard-reset. It appears to only affect esp32 (espressif_esp32_eye, adafruit_feather_esp32_v2) but not esp32-s3 (espressif_esp32_s3_eye). the other board I had at hand (rp2040) doesn't include hashlib.
Description
No response...
When it doesn't fail (Adafruit CircuitPython 8.0.0-alpha.1-137-ga22310236-dirty on 2022-08-14; ESP32-S3-EYE with ESP32S3) it says
>>> dir(hashlib.new('sha1'))
['__class__', 'update', 'digest']
>>>
which is still fishy because the locals should have had digest_size in it. This is a good clue because on the affected boards, using the attribute like h.digest_size hangs, while on non-affected boards it prints a nonsense exception:
>>> import hashlib
>>> h = hashlib.new(...
I had briefly thought maybe I had a super easy reproducer of the esp32-eye problem but .. no. it was bigger than that.
Issue #6735. Attempting a zero-length pulse in pulseout would mean on an NRF board that the interrupt timer would never fire; thus hanging the program. This patch will bypass and ignore any pulses with a length of 0.
I'd like to think about this some more before closing or merging.
[I updated the initial comment to have the special syntax for auto-closing the related issue]
shouldn't the two halves of this test be in the other order, so that the length is checked first? otherwise, there's the possibility of reading one item past the end of the pulse array.
Ok I'm completely confused here about web workflow.
Do I need to put something in code.py for it to work?
I added the .env file
The Thonny terminal title bar says "WiFi: off"
And connecting through the browser is failing. Which at least that makes sense to me.
what board on what build ?
I'm using the new Quick Start guide.
Feather ESP32 V2.
Latest.
There were only two builds beyond 8 beta 0.
So I went with latest.
Please review https://github.com/latkinso42/circuitpython branch adcdma as a possible solution or possible solution to this issue. Thanks!
you reset the board ?
Yah a few times.
I would check in the REPL with:
>>> import os
>>> os.getenv("CIRCUITPY_WIFI_SSID")
Ok
Returned nothing.
Is there a way to list the drive contents from the REPL?
I feel like yes
os.listdir()
The file is there.
>>> open(".env","r").read()
Returns the contents of the .env file
check that you used single quotes ? that was my mistake at first (using double doesn't work)
I had to change it to double quotes because my SSID has an apostrophe in it.
OK, how do I fix that
I think you can just remove the quotes
I escaped the apostrophe and Thonny isn't showing everything borked, so I think that might work
let's find out
There it is!
OK trying to connect via browser again.
๐ก
Oof, thank you SO SO much..... I literally never would have figured this out. I thought single and double were exactly the same thing, and that we were trying to promote usage of double, so I didn't even understand why it's done "officially" with single quotes.
yeah the .env format is weird
note that it's not python code, I don't know what Scott modelled it after, some type of existing dotenv library or something
Fair enough.
@onyx hinge do you have time for release staging q? I have a fix for _bleio.PacketBuffer. this is a regression from 6.x or some time before 7.3.2. This is to fix https://github.com/adafruit/circuitpython/issues/6786. Ideally this would get added to 7.3.x and I would make a new release, along maybe with updating frozen libs. Given the timeline of 8.0.0, does this make sense to you, and do you have any potential fixes for a 7.3.3?
fine to video if you have more q's
@tulip sleet Let me know if you end up vid, I'm up for joining. Not that I'll be much help. But who knows.
CircuitPython version
Adafruit CircuitPython 8.0.0-beta.0 on 2022-08-18; Adafruit QT Py ESP32S2 with ESP32S2
Code/REPL
import array
import board
import time
import pulseio
pulseOut = pulseio.PulseOut(board.A0, frequency=10000, duty_cycle=0xFFFF)
pulses = array.array('H', [10000])
while(True):
pulseOut.send(pulses)
time.sleep(5)
Behavior
Expect a 10ms pulse, but it has short gaps in it every 100us.
Description
_No respo...
I don't have any items right at the tip of my mind for 7.3.x.
Now I won't save, and I reset, and it can't connect anymore.
I think Thonny was interfering.
It's.... super flaky right now.
this potentially breaks any fixed length characteristic fetches, so maybe kind significant. I'll do a 7.3.3 then soon, with updated frozen libs as the only other fix
Yes, I see your point. I generally write the less likely expression first to speed things up, but that doesn't work here. Change has been made as suggested.
@idle owl did you do the "restart back end" or whatever in thonny
There's a blinky LED!
Several times.
It's... 4.0.0, released yesterday. But oof. CircuitPython support does not feel stable.
i had been testing using 3.whatever, but with a build with the status bar turned off. That worked ok (with plain ESP32), but I didn't push it very hard
#6751 maybe
Well 4.0.0 is now stable, apparently. Even tho their main page still links to 3x. There is a tiny link to "For those interested: 4.0.0" below it.
#6670 depending when it broke
#6659 might avoid CI problems in 7.3 branch
@tulip sleet I looked through merges into main since July 20 and found some possible items ^^
thanks, I will look at backporting those
I was thinking of 6751 too
So, to use WiFi with CircuitPython, the .env file replaces the secrets.py? Or do I need to do it like we have been all along to use WiFi connections to communicate etc?
not yet, I don't think any library has been changed to use .env
unless portalbase automatically takes the existing connection when it tests if it's already connected ?
This won't use PortalBase anyway.
have we standardized on .env keys for SSID & password when we don't want wifi auto-connect / web workflow?
(straight secrets.py replacement)
Now I need to figure out turning my LoRa code into WiFi code.
Oh right. And turn the battery monitoring from the I2C chip, to reading analog divider.
we could think about adding another .env value that says "don't autoconnect". I don't know what Scott's thoughts on this were.
did he discuss this in his streams?
we could also use a .env setting that turns off the status bar (there is already an issue for that)
I don't recall that, but I have been pretty sparsely present recently
libraries will need to handle several cases: web workflow wifi is already connected (but could be subsequently disconnected); non-web-workflow secrets.py replacement keys in .env, etc
connect() will do nothing if already connected, so it's basically upward compatible right now (though I'm not sure what it does if the supplied SSID or password are different)
that works:```py
web workflow active via
.envfileimport wifi
wifi.radio.ipv4_address
192.168.6.178connect to an alternate SSID
from secrets import secrets
wifi.radio.connect(secrets['ssid'], secrets['password'])
wifi.radio.ipv4_address
192.168.17.241
I can't get Thonny to work at all anymore. Keeps saying busy or whatever and failing to do anything. Can't open code.py. How else am I expected to work with CircuitPython on the ESP32? I know web workflow, but it's primitive, no syntax highlighting etc. I'd rather have something with a little assistance in it.
Serial is showing appropriate things in Thonny.
what says busy ?
Thonny. Click "open", and it pops up a thing that says it's busy.
Click ok, and nothing happens.
Hold on.
I have reset the board 15 times, and clicked "stop/restart" in Thonny repeatedly as well. This is what I get when trying to open a file.
you gotta enter the REPL
make sure the code is stopped
on the Huzzah V2 I selected the wch port and it showed the files in the board's drive in the files panel
Says code done running.
But I'll try to get to the REPL.
I can't get to the REPL. It gets to here and if I do ctrl+c, nothing happens, hit enter, nothing happens.
The LED is white.
NeoPixel, I mean.
Which I thought meant REPL.
it does, maybe Thonny doesn't notice, I would try (again ?) to stop/restart the backend ? ๐ค
Says "device is busy or does not respond" in red. And never actually does anything further.
I have to reset the Feather, and then it sees it again, but then it doesn't do anything to get into the REPL, rinse and repeat.
Sigh.
that's what I got:
I was there earlier. It isn't working anymore.
I've never seen that files menu though.
Panel I mean.
OK I really fast hit enter as it was restarting, and got into the REPL.
added an error in my code and that causes the symptoms you see
maybe because the status bar has changed to include error codes
Also, it says in REPL, but I can't interact with it, and it says busy now ๐ฆ
So that didn't work.
I would open an issue about it, maybe look into the PR that added support for the status bar to Thonny
Sigh. Ok. What do I do in the meantime?
:grumpy face:
I mean, web workflow isn't working either right now. But I blamed Thonny on that earlier.
I believe all issues have been addressed.
Connected via tio, and it was responding.... so I don't know if that's it?
If that is it, I don't want to file an issue on Thonny.
I think I'm done for today. I got my guide done earlier, and this has been a frustrating journey. I'll come at it again tomorrow.
in the tool I'm making I want to allow editing files with an external tool, the way cyberduck does it (download to temporary files, detect file changes, uploads when you save)
maybe we can write a plugin for cyberduck ๐ค
That would be nice.
though I am unsuccessful in using some mdns library to get all the CP boards
(right now I use the technique of asking the list from the board it randomly resolves to)
ah well if I don't misspell "cirucitpython" it works better
turnsout
Haha. That would do it.
@idle owl I will make a .env variable PR soon to turn off the status bar so you can work around this for now.
Thank you so much. This has been frustrating. I'm glad Neradoc figured it out. I was at a loss.
I don't know if it's the title bar actually, I tried an earlier build, but it was hanging, maybe for other reasons
Can remove these lines.
Couldn't comment on the files but I do not think you meant to include changes to the submodules frozen/circuitpython-stage or ports/espressif/esp-idf which will have to be removed.
I haven't tested this on hardware yet. I will see if I can find something suitable to do so later. Good work!
Typo in BufferedInPut (later in a couple cases too)
There are a few commented out lines that could be removed, here and in other files.
The docstring in this area needs to be cleaned up and written for readmultiple
Thanks guys. Most like not able to see the obvious anymore. Has anyone compiled and tried it?
I will! I've got a backlog of other things first, but definitely will review!
thanks very much for working on this
I left some comments that I spotted visually and do plan to try it, but haven't had a chance yet.
And I completely get what you mean by staring at something so long you no longer see the obvious!
- Fixes #6786.
Ringbuf for a fixed-size PacketBuffer was one byte too small.
I have a better cleanup for ringbuf which will also fix this problem in #6214, but it was a big change which I deferred to main and then forgot to add after doing #6238 instead for 7.x.x. I will make another PR for main that incorporates the fixes from #6214.
Basic adapted copy of the description for "Waveshare esp32 s2 pico WITHOUT lcd".
Images and additional information coming from https://www.waveshare.com/esp32-s2.htm
@onyx hinge I'm gonna try building with camera support for the ESP32-CAM board. If I have questions can I hit you up with them?
CircuitPython version
Adafruit CircuitPython 8.0.0-alpha.1-131-gf9b9f5568-dirty on 2022-08-13; Wemos Lolin C3 Mini with ESP32-C3FH4
Code/REPL
import wifi
import socketpool
import ssl
wifi.radio.connect('ssid', 'password')
pool = socketpool.SocketPool(wifi.radio)
import adafruit_ntp
import rtc
ntp = adafruit_ntp.NTP(pool, tz_offset=0)
rtc.RTC().datetime = ntp.datetime
def connect_https_socket(host, port, pool):
addr_info = pool.getaddri...
I originally encountered this using adafruit_requests library but debug further to raw sockets here. Hoping this provides a more straightforward example than using the requests library - though most of the connect_https_socket is stolen right from here: https://github.com/adafruit/Adafruit_CircuitPython_Requests/blob/a5d56f3e4866c8dbb343e03500355a42c46e557a/adafruit_requests.py#L494
Some questions I have that might be easy to answer and start on the right trackL
- how is the cert bundle generated (I assume related to this doc https://docs.espressif.com/projects/esp-idf/en/latest/esp32c3/api-reference/protocols/esp_crt_bundle.html)
- how is the cert bundle embedded in the generated firmware for these ESP devices?
I checked the fingerprint of the GTS Root R1 cert in cacrt_all.pem within the esp-idf repository and it matches the fingerprint found on the latest GTS repository.
SHA256 Fingerprint=D9:47:43:2A:BD:E7:B7:FA:90:FC:2E:6B:59:10:1B:12:80:E0:E1:C7:E4:E4:0F:A3:C6:88:7F:FF:57:A7:F4:CF
Ran using
echo $CERT_TEXT | openssl x509 -inform pem -noout -tex...
Ah I see, I guess we use the roots.pem in the nina-fw repo? https://github.com/adafruit/nina-fw/blob/d73fe315cc7f9148a0918490d3b75430c8444bf7/data/roots.pem
I searched through the roots.pem for the latest GTS Root R1 and couldn't find it. I did find the old one. So safe to say it's not up to date. This roots.pem was updated 6 months ago and is not updated with these new root certs yet.
Can we update roots.pem in nina-fw and propagate that change up through to this repo?
sure, you're welcome to ask into this channel and tag me. I'm far from the only person who'll be able to help you along, though!
Hmm, what if the AirLift board had the web workflow, and could push files/code/commands to the other MCU?
Esp. if the connected MCU was a Pi Zero running CircuitPython.
like by running CP on the airlift ?
yeah, exactly that.
It's better if the Pi Zero could run the web workflow directly but that is not likely in the near future.
Looks good! Thanks for your patience while we worked through the API possibilities.
usb_hid.Device.last_received_report was deprecated in 7.0.0 because we added Device.get_last_received_report(), and was scheduled to be removed in 8.0.0 (there should have been an issue for that). Prompted by #6767, this now finishes the changeover.
hi, theoretically yes, but I'm not trying to get 7.3.3 out today in particular. Should I ping you at various points? I
i'll be working on several backports
depends on how often you check your email and your degree of concentration
maybe tomorrow I can do them in a batch? I don't want to hold back 7.3.3 unnecessarily, but one day is probably not important
wow I don't usually see git rebase take seconds and seconds to finish working on a commit
the main thing is the amount of time it takes for all the CI runs
9167 files changed, 6 insertions(+) well those are some big changes (renames)
what are you rebasing?
GitHub
gh-pages regeneration has been taking a very long time. Most of the time is taken in processing old images and pages, which have their true forever home on https://www.adafruitdaily.com/category/ci...
Anne had been saying that it took a loooong time for updates when she would do a commit, and moving the old files away into an _attic helps a huge amount.
(a long time for actions to run and regenerate the website)
@litui Sorry I dropped the ball on reviewing this after returning from vacation. Couple of questions:
- Are the timing values counts or actual durations? (I could research this but you would know immediately).
- Do you have examples of I2C devices that fail without this fix that are sold by Adafruit? I could test a few on a variety of boards. If you have gotten more CircuitPython boards since this PR, your testing would also be very helpful. Thanks.
Thanks, but this was already done in #1027 which has been waiting on review for a couple of days now.
Could I get a review on this soon? Some duplicate PRs are starting to appear. It was tested locally as I made these changes and they pass the checking script, so even though there's 100+ files, it's fairly straightforward stuff.
Thanks! Just one potential typo. I did not read all the descriptions incredibly thoroughly.
@tulip sleet should I use dotenv or os.getenv? ```aio_username = dotenv.get_key('/.env', 'AIO_USERNAME')
I think os.getenv is more general, and could be used with blinka in case someone wanted to set a shell env
os.getenv('AIO_USER_NAME') then?
I think that should work
OK I requested your review on the PR, but don't merge yet because I .. didn't test yet. ๐
tests OK
(huh why will it let me request a reviewer when in draft mode? that's weird)
makes sense you can still ask for comments when a draft
"I'm keeping this PR all to myself. Go away!" ๐
Closing this as a duplicate. The other PR is now merged. If you want to update any text on it, feel free.
- Backport #6659, particularly because macOS 10 will no longer be supported by GitHub Actions after August 30, 2022.
@tulip sleet Did you end up putting in a PR to add a .env variable to disable the info bar?
not yet; I was thinking about how to do it. I can give you a build with it disabled if you want to just continue testing
That would be great.
which board(s)?
Feather ESP32 V2
Thank you, @tulip sleet!
@tulip sleet Thonny seems immensely happier. I introduced an error, and it's working as intended.
we'll have to figure out why errors confuse its interpretation of the status bar
Should I file an issue on Thonny? Or do we need to do more exploring on our end?
I typed one up, but it wasn't certain what was going on when I did. So I'd have to redo it anyway.
file it on circuitpython for now, because we probably just need to submit a new PR to thonny
just to get it recorded
Ok, will do. Thanks.
Not really sure where to put this, and this seems to fit the best. I'm developing a RP2040-based electronic fidget (I shared it on S&T a few weeks ago, it's called the E-Fidget), and I'm going to write the firmware in CircuitPython. This is a product designed for end users with the option to hack, but the majority of users won't be touching the code. It's going to be open source, but I'm questioning wether or not I should merge it into the official CircuitPython repo. I'm leaning on keeping it in a fork and not merging it. Any thoughts on this? Thanks.
That's entirely up to you. We'd be happy to have it, but if you feel more comfortable keeping it in a modified fork, you can.
I personally would merge it so the builds are available
That way I donโt have to always build a new version
The issue is, if you fork it, modify it, and don't push it back to us, you can't call it CircuitPython.
You can say "CircuitPython-compatible" and if you want to name it, pick a different name. But we ask that you don't use CP specifically if you keep the modifications in your own repo.
Ah, right. Licenses. I was more wondering if it would be OK to have a board in the official repo that doesn't really need to be there. Thanks for the feedback, I think I'll merge it ๐
If it's a board that you're creating and plan to use, then it's welcome in the CP repo. Whether or not it needs to be there isn't really a consideration.
You'll also want to get it added to circuitpython.org, a process which is outlined in a guide.
Adafruit CircuitPython 7.3.2 on 2022-07-20; Adafruit Feather M0 Express with samd21g18
>>> import adafruit_ht16k33.segments
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "adafruit_ht16k33/segments.py", line 484, in <module>
MemoryError: memory allocation failed, allocating 96 bytes
>>>
๐ฆ
Uff. File an issue? Not sure whether the plan is to say it doesn't work, or to refactor it.
@tulip sleet To be clear, the error should show up in the status bar (with a standard build) if an error is introduced into the code? I've never tried it that way before.
And obviously my current build doesn't have it enabled.
(I need to be back in a bit. So.... bbiab.)
line@file ExceptionName
about to be afk for a while; thanks @jaunty juniper
@onyx hinge if you have time to do one review, https://github.com/adafruit/circuitpython/pull/6803 is the update to macos 11 builds for 7.3.x, Merging that will prevent annoying CI issues for further 7.3.x backport PR's.
Back.
CircuitPython version
Adafruit CircuitPython 8.0.0-beta.0 on 2022-08-24; Adafruit Feather ESP32 V2 with ESP32
Code/REPL
x =
Behavior
Thonny will no longer let you interact with the board, either by attempting to save an update to code.py, or through the REPL.
Description
The code really doesn't matter, as long as it has an error in it. Thonny works great when your code will run. As soon as an error is introduced, Thonny stops working proper...
@onyx hinge thanks for the review. That PR is now stuck due to a GitHub Actions problem; I opened a ticket, copied below:
https://github.com/adafruit/circuitpython/pull/6803,
https://github.com/adafruit/circuitpython/actions/runs/2920905948The PR says that the subjobs
build-aarchandbuild-armareExpected โ Waiting for status to be reported, but in fact those subjobs both completed successfully, as can be seen in the runs URL above.
I saw this happen previously a day or two ago, but have never seen this before otherwise. I think at that time I re-ran the jobs, and it worked. But appears some status is not getting reported properly.
Here is the notes document for next Mondayโs CircuitPython Weekly meeting. It is at the normal time of 11am Pacific / 2pm Eastern here on Discord. Everyone is encouraged to attend! Please add your hug reports and status updates even if youโll be attending the meeting - itโs super helpful! If you are unable to attend but would still like to include updates, feel free to include them in the notes and weโll read them off during the meeting. Hope to see you there! <@&356864093652516868>
https://docs.google.com/document/d/1Vaq2NxkHrRgbkMilnD5Uqrp4l8eCGKBLwUmg498CnwU/edit?usp=sharing
Just reviewed all the online help for formatting. It seems I cannot find any good reference to comments other than use two forward slashes // However, I also see a mixture of two, three /// and two plus one vertical bar //|. So, what is best?
@hidden rain //| is specifically used for what becomes the API documentation, so within those regions you have properly formatted Python code. /// would be unusual style, I would not recommend using it.
So use // (or /* ... */) for comments and //| for Python API documentation that appears within C files
Gotcha! Code cleaning....while I whistle ... Thanks!
welcome
CircuitPython version
8.0.0-beta.0
Code/REPL
N/A
Behavior
As stated in the docs, when OPTIONS is requested, the Access-Control-Allow-Methods returns GET, OPTIONS, PUT, DELETE which gives you the methods that should work. However, I believe it should also return the newly added MOVE method when USB is disabled. I think because the MOVE method was added at the last minute, this was for...
That's fine, it's great that there are no more "unknown" board thanks to #1027.
Good idea. I believe there is currently a place to stick a link to a guide (at least on the blinka boards), but I don't think the website actually shows this link currently, so that should be fixed at the same time.
Ok, I think I know why this is affecting me when testing on the website, but not on the board itself. It's because it doesn't have to obey the CORS policy when it loads from the device itself, but I it does from the localhost copy I am running.
Does Thonny or the web workflow support multiple boards connected to your computer?
yup
yes, the web workflow will show you different boards on your network
How does Thonny do it?
you select the port in the bottom right with Thonny
Ohhhhhhhh
I kept going into the Preferences > Interpreter to change it. That's so much easier.
CircuitPython wasn't in the port list at the bottom corner. So I did it through the Interpreter page anyway.
So far so good though!
And two devices at circuitpython.local
I do appreciate it when others add boards. It's unfortunate when duplicate work ends up being done because things sit though.
A keypress while we waited for autoreload used to enter repl. Now
it won't.
Fixes #6480
Fixes #6805. This also adds the X-Destination header to be passed.
Documentation states that get_last_received_report() function should
return None if there was no report received previously, otherwise it
should return report. Moreover, same report should be returned only
once. That makes it possible to reliably process incoming OUT/Feature
reports.
This patch adds an array that stores flags if report with particular
ID was received and updates get_last_received_report() to match its
documentation.
Backport from main to 7.3.x (see ori...
Update documentation for Device.get_last_received_report() fixing
type signature and adding note on "consume" behavior. Followup for #6767.
CircuitPython version
Adafruit CircuitPython 8.0.0-beta.0 on 2022-08-18; Adafruit QT Py ESP32S2 with ESP32S2
Code/REPL
# A1 connected to ground through 10K
# Start REPL: 0.7V
import board, digitalio
d = digitalio.DigitalInOut(board.A1) # goes to 0V
d.pull = digitalio.Pull.UP # goes to 0.7V
d.pull = None # goes to 0V
d.deinit() # goes to 0.7V
Behavior
A0 is documented to have a 10K pullup, but all the other GPIOs seem to have ~40K pullu...
CircuitPython version
Adafruit CircuitPython 8.0.0-beta.0
Code/REPL
N/A
Behavior
If you go into the offline editor http://circuitpython.local/fs/ and rename a folder, it shows the full path. If you set it so it is inside itself (for instance you rename /test/ to /test/test2/) then the folder disappears with no error. I would expect an error message.
Description
No response
Additional information
No response
Trying to clean up my local repo ... very little response on help-with-git
We're in an internal meeting at the moment, and it's late for most of us. So be patient with us please! ๐
(bowing)...my apologies...
No worries! Simply letting you know.
CircuitPython version
N/A
Code/REPL
N/A
Behavior
N/A
Description
chip_select says it's Pin in the function definition, but is described as DigitalInOut in the sphinx parameters.
Additional information
I'm coming back to this to update very soon, but wanted an issue in case I forget!
If anyone wants to cancel the CI for this, it's a small documentation-only PR. Don't want to clog the CI tubes!
@tulip sleet hum are ALL the PRs getting stuck with "waiting for status to be reported"? https://github.com/adafruit/circuitpython/pull/6806 is as well
and I can't say "no who cares" at the merge prompt either
It appears so. Did we make any changes that would cause this??
We can change some settings to allow merging.
It doesn't seem like we made any relevant changes in actions. I mean, this is affecting 7.3 which hasn't had even the update for the macos version right?
yes
when I websearched this error there were some settings suggestions. I have the open ticket. But in the meantime we can enable merging anyway. I'll look it up again.
This one worked: https://github.com/adafruit/circuitpython/pull/6807 but it only needed to build espressif,
it skipped arm and aarch
This one was before the macos fix, and it's stuck: https://github.com/adafruit/circuitpython/pull/6800
Header changes look fine to me, didn't test.
I don't see any issues in the arm logs for 8600. it's very weird
I can hold off merging #6807 until you work out what is going on in case something weird comes up?
you can merge it, but the merge job may get stuck. However, that may help provide another clue. So go ahead and merge.
the merge job will run everything; we'll see whether it stays in some "run" state even after it's done everything.
Besides the issue, I will bring this up in the GitHub community and see if anyone has something to say about it.
8600 is also stuck, but only half-stuck @tulip sleet
github status is green, for all that's worth https://www.githubstatus.com/
Welcome to GitHub's home for real-time and historical data on system performance.
the espressif builds don't get stuck, but arm and aarch always do. It's really odd.
if aarch is the problem it's not the number of child-jobs in the matrix, there are very few there
@tulip sleet I'm stopping for the night so please remind me tomorrow to do those reviews for you
I know there are more there that I could look at right now but my brain is done
sure, np
I think I did all the 7.3.3 ones I need except I will do a frozen libs update as the last thing
#6214 for 7.3.x was closed without merging, but contains a cleanup of ringbuf and its callers. Redo this for main.
Test out the new adcbuffer module. Use this example code.py: https://github.com/latkinso42/ADCBufferExample/tree/main
The pins on Espressif boards are reset with a pull-up on. We are using the ESP-IDF's default reset pin routine. Using a pull-up actually causes less power consumption than having the pin float, according to Eespressif. See https://github.com/espressif/esp-idf/blob/23d5a582cb27d7c909d52557ca0ddceade510db8/components/driver/gpio.c#L393-L406.
Originally we floated the pin. This also caused some issues with random behavior of NeoPixels attached to pins. The reset was changed to the ESP-IDF def...
//| byte length divided by the byte_per_sample."""
Suggestion to fix the docs build.
With 8.0 I am connected to WiFi but when I do
import time; time.localtime()
I'm getting 1/1/2000.
Do I need to make some call to get the current time?
It matters because when I edit a file the timestamp is 22 years ago.
Yeah, that should work. Thanks!
@onyx hinge I got an answer to my GitHub ticket:
This is working as expected. The required status protection rule is expecting the checks to be named
build-aarchandbuild-armbut the checks generated by a matrix job will include the name of the current matrix entry e.g.build-aarch (raspberrypi_zero_w)which is a different name from what the check is expecting. This appears to be a recent change (those checks were made required about 2 weeks ago) that is why you are seeing it on your recent pull requests that target any branch with the pattern*.x.You will need to edit the branch protection rules(https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests/managing-a-branch-protection-rule#editing-a-branch-protection-rule) (for the
*.xbranch pattern) to remove those 2 checks as required and optionally add each matrix combination you expect as a required check, e.g.build-aarch (raspberrypi_zero_w),build-arm (8086_commander),build-arm (ADM_B_NRF52840_1)etc.
We have these required status checks in the *.x branch rule. Note that build-espressif is not included, which is why those PR's that only did espressif builds completed successfully.
I removed those status checks (they were not in main) and the actions are now complete.
This looks good to me now -- thanks! Will merge and backport to 7.3.x.
Thanks! I am a little worried this is a breaking change for 7.3.x, but since the documentation said it should work this way, so people should have coded for it, and the relevant library has been fixed to account for this behavior fix, I think this is OK to add to the next 7.3.x release.
@stuck elbow I am updating frozen modules, including circuitpython-stage for a 7.3.3 release. Is the latest circuitpython-stage fine for 7.3.x? Thanks.
yes
should work with any version that has keypad
that was the latest incompatible change
that's good, wasn't sure if you made an 8.0.0-only change
sure, thanks for asking
that is weird and useless. we'd have to list out 300+ boards in the branch protection rules for it to do what we want? glad you got an answer.
yes, pattern matching would be much better. I don't understand whether Scott added these status protection rules recently, or they were just leftover and started to be enforced. I asked about that.
I see github has started adding nags about unprotected branches; it creates the urge to do something
I can't remember whether I saw those or not. Maybe Scott was experimenting. What's weird is that build-arm is actually a choice in the rules, not just build-arm (board-name)
yes, four 7.3.x, thanks
oh so there's the problem of being led down the garden path, too, huh.
given how often there's a hiccup build, it's a bit of a nuisance to have to check. But it's also true now we can finally re-run just one failing job.
Intuitively makes sense, but feels like it could use actual testing as well.
A tiny slice of me thinks maybe the buffer should be 1 element bigger, not 1 byte bigger, because maybe otherwise uint16_ts get split or misaligned once the ringbuffer wraps around
one that I had a tiny q about, but testing trumps my vague concern.
I have a much better fix in #6214, which was closed because it was too dangerous to incorporate in a 7.3.x point release. But I opened #6815 to remind me to bring in the #6214 changes to main. You had one concern about #6214 not being atomic in certain ways, but ringbuf's uses do not assume atomicity.
I think the byte vs 16-bit int does not make a difference for this PacketBuffer case.
I did test this with the #6786 tests.
OK, thanks for the info.
Looks like it's this. Since the max value of
duty_cycleis 0xFFFF, I think the answer for that should be 100%, but it's 99. Should we divide by 0xFFFF instead of1 << 16?
That looks suspicious, certainly. Would you like to try a pull request and test the proposed fix? We can help you along with getting a build environment set up (Linux is by far the easiest). If you'd rather not, we're happy to try.
How often would you say it happens? If we try to reproduce, it would be good to know how long to wait for a crash.
Ideally we would reduce this program to a very simple example, to see what is significant and what is not. For instance, if you faked the use of the VL53L1X, or if you removed the deep sleep, does it still crash? Thanks.
I will try to try this out on hardware but may be tomorrow still.
@lone axle you closed https://github.com/adafruit/Adafruit_CircuitPython_TLC5947/pull/26 for sokratisvas but issue #25 is still there. found this today when cleaning up my local clones
Thank you. Got the issue closed now.
Update documentation for Device.get_last_received_report() fixing
type signature and adding note on "consume" behavior.
Backport of #6810 to 7.3.x
The VID/PID are not yet accepted.
This ValueError msg was used in audiocore/RawSample.c. How would one establish re-use?
All /// replaced with //|
Down to very minor issues (I believe) which, I am very happy to correect. Thanks to my reviewers for helping me get and git this far!
@tulip sleet Let me know if/when you put in the PR to allow disabling the status bar so I can test it. Thanks!
I wanted to talk to you and @onyx hinge about the design of this. it could be in .env, but the potential options are complicated, and perhaps just adding to supervisor is good enough for now. The status bar is displayed two ways: on a display and via the REPL serial connection. Either both could be enabled/disabled. So something like supervisor.status_bar(console=True, display=False)
Hmm, ok.
Oh I get it ok
Had to reread
Why would .env be complicated? Wouldn't it simply be, probably two variables, you set true or false in the file?
One for console, one for display.
does this make sense to you? doing it as a a single .env value (or even two .env values) is more work: we don't have "convert a .env value to a boolean". There is no obvious standard for that: SOME_BOOL=x, where x could be True, true, t, (and similarly for false)0, 1, yes, no, on, off, etc. So I am inclined to skip the .env for now.
but that means supervisor.status_bar() might need to be in boot.py to get it right (esp for display status bar enable/disable)
That's fine, frankly I like that better than in code.
it begs the question a bit of why have .env at all, since the same stuff could be in boot.py in some form.
just not as compact
I've kind of wondered the same thing.
and there already is dotenv support in CPython
But that's obviously not my decision.
I'll be back in just over an hour. I have an appt.
right, i'm wavering on this; @onyx hinge appreciate your thoughts at some point
i am working on the 7.3.3 release right now but can do the status bar next
I think for any given setting there should be just one way to set it.
I think one motive Scott had for introducing dotenv is that it was carefully coded so that it could run before any VM ever started, or after the VM is ended.
On the one hand I like declarative which .env is but it's easy to typo and there's no way to see the "you named the key wrong" error. boot.py can actually show you a python exception if you know where to look.
So all in all what's most important to me is that there's a single way to enable/disable, but I'm not super concerned which of the two it is. Maybe look at what has the least effect on code size as a tie-breaker?
.env outside of VM is a good point, I'd forgotten that. disabling/enabling status bar could be done at any time, at least for the REPL version, which argues for supervisor. supervisor is probably less code because of the boolean parsing thing. I don't think there has to be just one way to do it, though.
If you think it's good to change it at runtime then go with supervisor. I wasn't considering that angle.
or could be STATUS_BAR=console,display, STATUS_BAR= (both disabled), STATUS_BAR=display (no console)
then I avoid the boolean and I don't need two .env entries
CIRCUITPY_STATUS_BAR is probably the actual name, if i used .env
would it be reasonable to just test that the entry is not empty ? when testing environment variables that's how it's done sometimes if [[ -z "$VAR" ]] or something
I like that
and that
well, I looked at some stackoverflow discussion about .env, and some people use value in ('True', 'true', 't', '1'), etc.
the multivalue thing (console,display) is easier and clearer. so the q is whether to make it dynamic via supervisor. I could imagine doing that, because an IDE might want to enable disable it via the REPL
there are all sorts of things in supervisor now that could be in .env; maybe we need to use .env only for things that need setting before the VM runs, or for user-defined values that code.py would fetch for its own private use (i.e., not predefined values)
e.g. NEOPIXEL_STRAND_LENGTH is set in .env, and your code.py doesn't need to change ifthat changes
wasn't the original motivation to replace secrets.py ? for potential C-python name conflicting reasons, and security (using environment variables on linux)
i will look how the status bar is set up on the display, whether it can be dynamic (the change could just be ignored if it can't be), and then it would just be settable from boot.py. console status bar can certainly be changed post-boot.py
yes, that was another motivation
good point, let's not try to overuse it for everything
for the display, display.root_group would be the way to hide it
though that's a little low-level-not-really-documented
i haven't looked yet to see how it's set up
@idle owl ping. got non-urgent library question.
@tidal kiln pong.
hey. so, gonna give this MSA301 lib some attention.
Yeah
Ah right.
I'm not certain how that works, to be honest. Maybe remove it and readd it once renamed. And update the drivers.rst file or whatever the file is called.
Not certain whether it would update on its own in the bundle when the repo is renamed.
You're also going to have to grep for all instances of the name in the repo and fix those.
And I guess we'll have to redo RTD.
oof. sounds like this hasn't been done much before?
Not to my knowledge. We almost never rename libs, even when we add more chips. It's completely doable, but will take some steps.
I know that one should be renamed though.
Dan brought it up in one of our meetings.
i'm thinking getting through the rename process first
initially it'll just be what the current repo is
and can then PR to that new repo with all the updates
Yeah ok. That's done in Settings. Do you have access to that?
yep. i think that'll be the easiest step ๐
For sure.
bundle/RTD/pypi - not so
Also the old links will still work for now. No idea when GitHub stops redirecting.
i guess let's get the easy rename taken care of at least
Adafruit_CircuitPython_MSA3XX ?
Adafruit_CircuitPython_MSA3X1 ?
Um... Limor would know that better than me. What chips might be added in the future.
Adafruit_CircuitPython_YYYXXX ? ๐
example rename in the bundle: https://github.com/adafruit/Adafruit_CircuitPython_Bundle/pull/219
Thanks, Dan!
@tidal kiln ez. ๐
ah cool. can just direct edit the files. yah easy.
I did not know that it was discontinued
Disco!
@tidal kiln the company lists an MSA310 and MSA311 as current products; it's confusing what the difference is. But the "MSA3" prefix seems to indicate this kind of sensor (they have MSPC---, etc.). So MSA3xx seems like the best
i see what Limor said, though
MSA301 is not even a current product from the original co
can come back to rename if it ends up being confusing that MSA311 is in MSA301 lib. i think there a few other libs that are sort of like that. same deal, grew with time but retained original name.
There certainly are.
socketpool.SocketPool(wifi.radio) in PyCharm is reporting unexpected argument. It's copied from previous Learn code. Did something about socketpool change, or is PyCharm wrong?
The docs are not really clear to me.
this is ESP32xx?
ESP32 V2.
I do not see that ever should have worked, hmm...
Oof.
where is the previous Learn exmple
yeah lotsa places
These for sure worked when I wrote them.
Yeah, those are the two I had open. So I shared both.
did you say socketpool.SocketPool(wifi.radio) or socketpool.Socket(wifi.radio)
in PyCharm?
pool = socketpool.SocketPool(wifi.radio)
I was looking at socketpool.Socket(0 by mistake
could you show the PyCharm screenshot?
There is no signature for def __init__() in the SocketPool doc. That is a mistake, and maybe why it is is complaining.
Hmm.
I don't think anything changed in CircuitPython
So, it should work, but the docs are borked, and so PyCharm is complaining?
right;
I'll open a doc issue about it
Thank you
socketpool.SocketPool has no def __init__(): documentation. @kattni's PyCharm noticed this and complained about the typical argument socketpool.SocketPool(wifi.radio).
@onyx hinge @idle owl @jaunty juniper I'm now thinking that you might want to query the status bar info, in case you don't know the current state, so thinking of properties instead: supervisor.runtime.console_status_bar and supervisor.runtime.display_status_bar
How will that work in practice
because it was looking like I might want to pass "don't change" args to supervisor.status_bar().
supervisor.runtime.console_status_bar = False
supervisor.runtime.display_status_bar = False
to disable it so Thonny won't mess up right now, you would just use the first line
Right
could also do if supervisor.runtime.console_status_bar: ...
yeah, for usb_cdc, we have usb_cdc.disable(), usb_cdc.enable(console=<bool>, data=<bool>), so I started to do that, but realized you might want a don't care (usb_cdc.enable() doesn't have don't care args).
there was a long go-around about the USB enable/disable API's in https://github.com/adafruit/circuitpython/pull/4689
Ah ok
I couldn't do usb_cdc as properties because modules can't have properties, but we have supervisor.runtime, which can have properties.
because it's a (singleton) class instance
I'd prefer boot, but that's me.
Fair
and do you prefer supervisor.runtime.console_status_bar or supervisor.runtime.status_bar_console. I guess I could also have supervisor.status_bar.console and supervisor.status_bar.display, but that might be overkill. But there could be other functionality on the status bar, I suppose. It takes more code space, a bit
where status_bar is the singleton for supervisor.StatusBar
Hmm, that wouldn't use .runtime then?
right, could be separate
Not sure what that means for the backend situation.
not a lot, functionally, it's more code and strings
I like the .status_bar.console etc better, but if the .runtime versions are cheaper, go with .runtime.status_bar_console
Indeed.
@onyx hinge @idle owl the 7.3.3 PR's are still going; I think I will wait to release 7.3.3 until Monday, so we don't release on Thursday night and then have only Friday to deal with problems
That's a good idea.
ah github, don't change (please don't get slower)
the ordering of the jobs seems all messed up at the moment. Several PR's were mostly done, and then stalled. I did cancel a few builds that were not really useful
Ok, I have this example that uses deep sleep, and pin alarms. There is alarm.sleep_memory peppered throughout the code, and then that info is sent over LoRa. I'm trying to do a WiFi version of this, and I don't understand what that code is doing, whether I even need it, and if I do, how to handle it. Example is here: https://github.com/kattni/mailbox_notifier/blob/main/Feather_code/code.py
alarm.sleep_memory persists across deep sleeps and reloads (but not resets)
Right
So, I just have run into this issue on a MagTag, on both the latest CircuitPython 7 release, but also on the 8 Beta. Interestingly, this seems to only happen when the MagTag is plugged in via USB into my laptop. It's fine if it's running off the battery. Also, it works fine using the same USB cable on a powerbank.
So ultimately, a noisy power supply or a noisy ground level might jsut be to blame here...
I guess tracking counts, [0] is handy to know if and how many times you woke up, since packet sends (like UDP) are not robust, [1] counts packets sent, and [2] counts errors ...if I'm readin it all right
the reciever can then also know hoiw often packts get missed
essential? probably not. it's just informative metadata
Ah fair enough
Kind of want to make it work with my code. I'll give it a try. ๐
Now to actually test it. Really wish I was working with native USB, heh.
ESP32 Feather? You could test it on a native board, then move it over.
Yeah, but I'm supposed to be using ESP32 to try to bug hunt it. Already found one major issue. Also to get used to the workflow. Etc. Either way, yes it's possible, but this is how I'm doing it. ๐
Oof. Thonny does not handle deep sleep very well. Pretend or otherwise. No way to break out of the code once it sleeps, apparently. So I can't update any of the code unless I can get it to wake up again, and then CTRL-C out of it. Or maybe that's what it does with tio as well? Never tried to get to the REPL when it was pretend sleeping, that I'm aware of.
@crimson ferry Ok, so, the "packet count" isn't really a "packet" count anymore, right? More of a payload? Or something like that? Because it's sending data to Adafruit IO, not packets. Should probably name it better, if I'm correct.
It increases each time data is sent to AIO.
The os.stat docs do not fully describe the behavior.
From the docs it is unclear what the returned tuple represents.

you're supposed to be able to break out of deep sleep with ctrl-C. But if it doesn't work on the plain ESP32's, that's a bug
it has to use a different mechanism to detect the ctrl-c than would be used on USB-capable boards like ESP32-S2
yeah, send count or something like that is probably more descriptive
Hi, so the build guide is recommending a Ubuntu VM. Should it still be 20.04? Would it make any difference if I take the KDE or XFCE one instead of the default?
Sounds like it can probably be done on any Linux but I'm in a "wanting the instructions to just work" sort of place.
22.04 is fine, and the desktop doesn't matter. There might be minor package variations. I am using 22.04 with a cinnamon desktop
Cool, might try it tomorrow
I am updating the guide to 22.04
@adafruit/circuitpythonlibrarians I think this should be closed but want final confirmation. The board specific libraries are now available on PyPI for Mu, so typing should be available as they get type annotated. Each of the repos has their own type annotation issues, so this is duplicate now, I think.
Is anyone else taking care of the creationid/creators repo while scott's on leave?
@onyx hinge closure on the status check rules from GitHub:
When you say this do you mean that one of us with repo access added these status checks, or that there was a change in GitHub that started enforcing these?
The change was made from your end. Looking at our logs, those required status checks were created by the tannewt user. You can audit this by reviewing the audit log for the organization https://docs.github.com/en/organizations/keeping-your-organization-secure/managing-security-settings-for-your-organization/reviewing-the-audit-log-for-your-organization and searching for
action:required_status_check.create.
We can do it; I wasn't subscribed to that repo, I think. Which one is it?
Found and approved your PR
It usually runs for hours before it crashes. I might try to put some additional print statements in to see if I can zero down where itโs crashing. Iโm away for the next few days, but will try when I return. I hope we can resolve this or Iโll be forced to rewrite the app in Arduinoโnot a bit problem, but it will turn me off on CircuitPython.
On Aug 25, 2022, at 8:51 AM, Dan Halbert @.***> wrote:
How often would you say it happens? If we try to reproduce, it would be good t...
@spiral elk @tulip sleet I was supposed to be covering that repo but I must also not have been subscribed to notifications.
TA
Suffering Succotash: is there a way to test the documentation build before I push to remote. It seems my PR build has failed numerous times over a missing tee cross or eye dot. Sorry for the lament; I just would rather not push code that I might could fix first. Is there local program I can run first? Any suggestions?
This will be a prerequisite of the pi-cow work
make html I believe builds it all, but I always forget myself so someone may have a better command
yes, "make html" in the top directory I think is right. pip install -r requirements_doc.txt first.
Good to know. I guess file an issue, then?
Great, thanks for confirming!
It was still trying to use the gamepad module, and there was a typo
I am happy to note that the interrupt problems that made ugame unusable with 7.x are fixed somehow in 8.x
I also use sphinx-build -E-W -b html . _build/html that the CI uses. Is there a difference between that and make html?
For the core? Or libs?
Oh, right, libs
I feel like I did see a difference between using make html vs the spinx command directly in the core. Back before I knew about make html I always used the sphinx command and I think I ran into an issue that using make html solved. But don't recall the specifics.
I would also run into little things I'd forget or did wrong that make html would just get working for me
make html does all this:
$ make -n html
rm -rf circuitpython-stubs
mkdir circuitpython-stubs
python3 tools/extract_pyi.py shared-bindings/ circuitpython-stubs
python3 tools/extract_pyi.py extmod/ulab/code/ circuitpython-stubs/ulab
python3 tools/extract_pyi.py ports/atmel-samd/bindings circuitpython-stubs
python3 tools/extract_pyi.py ports/espressif/bindings circuitpython-stubs
python3 tools/extract_pyi.py ports/raspberrypi/bindings circuitpython-stubs
cp setup.py-stubs circuitpython-stubs/setup.py
cp README.rst-stubs circuitpython-stubs/README.rst
cp MANIFEST.in-stubs circuitpython-stubs/MANIFEST.in
(cd circuitpython-stubs && python3 setup.py -q sdist)
sphinx-build -b html -d _build/doctrees -c . -E -v -W --keep-going . _build/html
echo
echo "Build finished. The HTML pages are in _build/html."
Right.
So... how would I make this an f-string, that caps the float at 2 decimals? print("Current battery voltage: {0} V".format(voltage))
>>> x = 1.234
>>> print(f"{x:.2f}")
1.23
Wait... what's the second f doing. I started digging around and found some vague answers, but some have the second f, some don't, and I tried it w/o the second f and I get only one decimal.
I noticed both of these...
msgid "All I2C peripherals are in use"
msgid "I2C peripheral in use"
"format x, but like good old %.2f" where %.2f is "something only a C programmer would love, and maybe a Python user would grudgingly learn a little bit of"
funny how all 3 (?) major string formatting sublanguages in Python seem to derive from C printf format specifiers
struct and array use the same formats, as well as numpy or ulab
similar syntax was even used in FORTRAN (1950's) and probably other languages around that time. In FORTRAN the f comes first.
I think the type of the variable depended on what letter it started with, no? Hence "i" used traditionally in loops.
i mean in the FORMAT statement
A = 1.234
PRINT 10, A
10 FORMAT(F8.2)
referring to my (mother's) copy of "Programmer's Primer for Fortran: Automatic Coding System for the IBM 704", copyright 1957
That's crazy to think Fortran has been around that long. I had to look at it around 2003 or so for a system that just been taken out of production
I learned Fortran from the book mentioned above, in 1970.
Iโve never learned FORTRAN, really, but I remember it being taught in college in the early 90s.
it was very controversial, making expensive computers do something that a bunch of undergrads can do for free
Molecular Dynamics, Statistical Weather forecasting in Fortran on cluster is hardly bested by any other language on any platform... BTDT. Although, cross-linking Fortran Object code to C source is always fun!
pip install -r requirements-doc.txt; Results in.....
File "/usr/lib/python3/dist-packages/setuptools/command/install_lib.py", line 17, in finalize_options
self.set_undefined_options('install',('install_layout','install_layout'))
File "/usr/lib/python3/dist-packages/setuptools/_distutils/cmd.py", line 290, in set_undefined_options
setattr(self, dst_option, getattr(src_cmd_obj, src_option))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/setuptools/_distutils/cmd.py", line 103, in getattr
raise AttributeError(attr)
AttributeError: install_layout. Did you mean: 'install_platlib'?
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for lazy-object-proxy
Failed to build lazy-object-proxy
ERROR: Could not build wheels for lazy-object-proxy, which is required to install pyproject.toml-based projects
what is the host OS, what version of Python?
Linux MST-Ubuntu64 5.15.0-43-generic #46-Ubuntu SMP Tue Jul 12 10:30:17 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
cat /etc/issue
Python 3.11.0b5
we have not tested with 3.11
but why did you insstall 3.11? Is it in /usr/bin ?
I just tried the same thing myself and it was OK, with Python 3.10
also using 22.04
Had trouble early on.. easier to move forward
did you install a private version in a venv, or did you upgrade the system version? Not a good idea to upgrade the system version
which python3
/usr/bin/python3
I suggest you revert to the normal Ubuntu supplied Python packages.
Not sure what happened .. its was weeks ago
ok.. I'll go thru that this weekend.
SO basically undo and uninstall python.. then revert to 3.10
it depends on how you got it that wayโฆ
you can't uninstall python, because it's used by so many system things.
you could install the standard packages instead of whatever other ones you installed. Did you add a ppa for the latest versions?
yes, so undo that ppa
it's OK to use deadsnakes or whatever to install multiple versions of python, but you always use them as python3.11, etc., not messing with the standard python3
if you did it because you were having trouble with CPy builds, there was probably some other problem. We don't use 3.11 for anything right now.
and there may be version skews between the versions of pip, python, etc.
it may, may still be in your shell history
ok.. it seems I'll have a wonderful time in the AM. I'll look at history. Its more snake skinning than I wish to tackle tonight... Thanks!
good night, good luck!
Tested it on hardware and when I hooked it up properly it worked! (used pwmio to generate a pulse to see).
Two changes for what readmultiple returns and for checking which pins are valid.
I think this should be || instead of &&. It was letting me use invalid pins.
Is there a reason to return an Integer here? In the code it only ever returns true so probably works to just return mp_const_none and then change common_hal_adcbuffer_bufferedinput_readmultiple to return void rather then a boolean.
@latkinso42 reported on discord that they ran into problems using Python 3.11 from a PPA. Let's see what happens when we try to CI based on 3.11. Note that these are probably two different Python versions and could fail in different ways, since the Python installed by setup-python is built by github and is different from any distribution, package, or ppa version.
@hidden rain @tulip sleet I have a partial answer for you .. Debian patches setuptools to support their own idea of how Python packages ought to install files, and uses install_layout to determine whether a package will follow the Debian way or the Python way. However, several different 'layers' of the packaging system all have to agree on this. It's a source of grief. My guess is, the combination of this ppa python beta and some of the standard python files just .. don't get along. If you can reproduce this with a simple 'pip install' command, you may wish to report it to the person/group that maintains the ppa.
This is needed to start working on #6558 to get Pico-W support started.
Built and ran it on a KB2040. Nothing seemed off. I think it works.
For fun started to add a couple includes/libraries in to see that it saw the CYW43 library (it did). (Had to update the submodules of the SDK which probably means a change to make fetch-submodule)
I'll leave the merge in case you still want to do more testing.
8.0.0-beta.0: trying to assign a NeoPixel, I sometimes get RuntimeError: Input/output error, which the code then follows up with deinit, which also gets that error, then hard faults ...something to do with the new timings?
(ESP32-S2 Feather TFT)
The new NeoPixel timings were done in 7.3.0, so I don't think that's the issue -- sounds like something else. Could you open an issue with a simple example program?
sure, need to distill down an example
This looks like a stack size issue. Running 8.0-beta-1 I get:
code.py output:
Traceback (most recent call last):
File "code.py", line 1, in <module>
File "test.py", line 5, in <module>
File "adafruit_mcp230xx/mcp23017.py", line 18, in <module>
File "adafruit_mcp230xx/mcp230xx.py", line 16, in <module>
File "adafruit_mcp230xx/mcp23xxx.py", line 14, in <module>
RuntimeError: maximum recursion depth exceeded
Building with CIRCUITPY_DEFAULT_STACK_SIZE set to 4608 (from 3584) ...
I'm getting a similar if not identical crash. Admittedly I haven't tried slimming my code to figure out if it's something specific in the code causing it. Will do some testing and report back.
Update LICENSE to better comply with GitHub's formatting. Also, rename MicroPython's license to LICENSE_MicroPython.
After:

Before:

@onyx hinge Just tried your esp32-s3-eye-adafruitio demo on my eye -- works great! Thanks!
Also tried the adafruitio and lcd demo -- even uploaded it via the web workflow!! Woohoo! all working well.
The build fails, though for different reasons than reported on discord:
ERROR: Could not find a version that satisfies the requirement minify_html (from versions: none)
ERROR: No matching distribution found for minify_html
Error: Process completed with exit code 1.
This error occurs because minify_html is only shipped as a wheel. This is probably related to the fact that it's written in rust, a language where you can seldom depend on the target machine having a working toolchain.
Support for the ESP32-CAM board from AI-Thinker (http://www.ai-thinker.com/pro_view-24.html)
Tested:
Wifi, including web workflow
Both onboard LEDs (on IO4/IO33)
IO0/2/12-15
Onboard microSD card via SPI (sdio is not yet supported on espressif)
IO16 is broken out but is used for the PSRAM CS so the pin is left undefined
Untested:
Camera support, but necessary defines in pins.c have been made already.
Creationid registered in https://github.com/creationid/creators/pull/18
Hi, I am trying to compile CP for ESP32, but I seems to be missing the compiler: xtensa-esp32-elf-gcc. I'll have a second look at the learn guide, but maybe it is up to date for ESP32-S2 / S3 but not ESP32.
Jeff,
Thanks for the in-depth analysis.
I generally move forward to solve incompatibility issues.
Perhaps my install of python 3.11 was 'piece-meal'.
I will be reverting my python environment back to 3.10.
I appreciate all the help.
Cheers,
-Lee
On Sat, Aug 27, 2022 at 8:05 AM Jeff Epler @.***> wrote:
The build fails, though for different reasons than reported on discord:
ERROR: Could not find a version that satisfies the requirement minify_html (from versions: none)
ERROR: ...
Did you source esp-idf/install.sh? That should download the toolchiain. Then when you do source esp-idf/export.sh it will add it to your PATH in that shell session.
maybe you don't have to source install.sh, just run it
Yes I did that, excuse the French and ignore the "DGL:" but the installer complain about something git related: ```Installing Python environment and packages
DGL:python /home/dglaude/circuitpython/ports/espressif/esp-idf/tools/idf_tools.py install-python-env
fatal: Aucune รฉtiquette ne peut dรฉcrire 'd51f7d882187afa4b39c2613fd0fe2ac2fea1145'.
Essayez --always, ou crรฉez des รฉtiquettes.
WARNING: DGL:Git describe was unsuccessful: b''
Python 3.8.10
I found where in idf_tools.py it display that message (I added "DGL:" to confirm).
So it is something going wrong with espressif install.
Try doing this in a fresh repo clone. Also note that you have ~/.espressif, which is where install.sh puts things. You can remove that and it will get re-created.
It is in the function def get_python_env_path() on line 980 ...
also perhaps your version of esp-idf is not correct?
Oh it was fresh install and I never did ESP32 compile before.
I'll remove the .espressif and try again.
so fresh clone, then do make fetch-submodules, then do the esp-idf things. Do you have an unusual hand-made python environment?
There is meme about python environment... I hope mine is not unusual.
what is the base OS here?
Ubuntu 20.04.5 LTS x86_64
should be ok
At least I was able to compile a QT-Py firmware, so that is already great archievement for me. ๐
also does "python" run the system-installed python3
sudo apt install python-is-python3
that used to be an issue for IDF, which just used "python" in the setup scripts
python is python3 I checked that.
I followed the learn guide. Initially I was thinking that maybe ESP32 was not covered as it talk about S2 and S3.
I should update that
and should mention -C3 as well
I removed circuitpython folder and .espressif folder, now trying again from scratch.
https://learn.adafruit.com/building-circuitpython/esp32-s2-build The URL is misleading but the text is all just "espressif"
Indeed I also saw that the URL was too specific.
ok, I fixed the URL
I'll try again later. Thanks.
Hi! Right now we know there are problems with canio on esp32 as noted in https://github.com/adafruit/circuitpython/issues/6605 -- all I tested was loopback mode, as I didn't assemble a setup with transceiver boards &c.
if you can test and provide any additional information on that PR or perhaps help us resolve it, that could be helpful.
Based on a cursory look at tools/ci_check_duplicate_usb_vid_pid.py I did not see where it checks for duplicate creatorids. As we add more boards that use this type of unique identifier, we should make sure we're checking for uniqueness per board definition.
@onyx hinge what is creatorid and why should it be unique?
@stuck elbow https://github.com/creationid/creators#creation-ids
64-bit numbers (split 32:32 creator/creation) that are used by CircuitPython in lieu of USB VID/PID when there's no native USB
so basically on esp32 and not much else at the moment
Converting to draft until you verify the camera works. Please also let us know if you see unexplained weirdness with or without camera similar to #6745 as we have no good grasp of just what is going on there yet.
@onyx hinge I'm actually gonna have to find my camera
After re-install, I still fail to compile magtag but not at all at the same place. But that's fine, because what I really want to do is build for ESP32.
Now for huzzah32, I had to get minify-html and jsmin that might be missing from the documentation or from the requirements.txt files: UPDATE those two are the last line of requirements-dev.txt <= I don't know why I was missing it.
pip install minify-html
pip install jsmin
make -j1 BOARD=adafruit_feather_huzzah32```
Now I have produced the bin (that I cannot test because I still fail to locate the box with all my ESP32 board, previously known as the box with all the board not capable of running CP).
I have documented the error message here: https://gist.github.com/dglaude/d74c7f6f2b8fa210bc45836aa4c3e7fb
Ok, my problem is only with magtag, other random selected board seems to work fine.
For magtag?
I blame my cats for climbing on the keyboard
But it is totally a non issue. I don't plan to compile a custom firmware for the magtag.
ok ok
Lost power during a storm today. Restarted PC. The device is unrecognized in Windows. Throws an error when unplug/replug.
Intentionally didn't hit the reset button to collect info on this issue.
Hit reset on the board.

Narrowed it down to the wifi or online portions of the code causing it. In it's offline state with no wifi code in it, it's works perfectly fine, can upload code with Mu and use REPL without issue.
Ugh this is like hitting a moving target. Backed out of everything, returned to original code.py and everything works fine. This thing is time based, I have to wait like 10 minutes, put Mu in the background, then come back to it in order to replicate.
[adafruit/circuitpython] Issue opened: #6829 wifi Monitor channel doesn't change in 8\.0\.0\-beta\.0
CircuitPython version
Adafruit CircuitPython 8.0.0-beta.0 on 2022-08-18; Adafruit Feather ESP32-S2 TFT with ESP32S2
Code/REPL
import time
import random
import wifi
time.sleep(5) # time to allow serial to connect
ch = random.randrange(1, 14)
mon = wifi.Monitor(channel=ch)
while True:
pkt = mon.packet()
if pkt:
print(f"{time.monotonic_ns()} {mon.lost()} {mon.queued():3} {pkt[wifi.Packet.LEN]:4} {mon.channel:2} {pkt[wifi.Packet.CH...
Correct ! Replaced && with ||
Agreed. Return mp_const_none in shared-bindings and void in common_hal.
On built-in display REPL (e.g., ESP32-S2 TFT), \r has no effect, so print statements cause the display to scroll rather than overwriting the line.
On web workflow REPL, \r also has no effect. But in this case, subsequent print statements get appended, resulting in long and ever-growing lines. Also, it would be handy for viewing scrollback to either:
- support control-s and control-q, or;
- don't reposition the view to the current line when text is added but the view had been scroll...
PR note: when you address a proposed change, you can click "Resolve Conversation" in the comments above. If you want to wait for acknowledgment from the commenter, then the commenter can resolve the conversation.
Thanks for the analysis. Code changes made. -Lee (8/27/21 @ 3:00PM-EDT
Slimmed it down to this, saved, came back 10 minutes later, hit save again, works perfectly fine.
# SPDX-FileCopyrightText: 2022 DJDevon3 for Adafruit Industries
# SPDX-License-Identifier: MIT
"""DJDevon3 UM ESP32 Feather S3 Online Weatherstation"""
import board
import displayio
from adafruit_display_text import label
from adafruit_bitmap_font import bitmap_font
from adafruit_bme280 import basic as adafruit_bme280
from adafruit_hx8357 import HX8357
# 3.5" TFT Featherwi...
Acknowledged!
Will do in the future!
On Sat, Aug 27, 2022 at 2:58 PM Dan Halbert @.***>
wrote:
PR note: when you address a proposed change, you can click "Resolve
Conversation" in the comments above. If you want to wait for acknowledgment
from the commenter, then the commenter can resolve the conversation.โ
Reply to this email directly, view it on GitHub
https://github.com/adafruit/circuitpython/pull/6757#issuecomment-1229246508,
or unsubscribe
<https://github.com...
"playback" sounds more like output than input
//| :param ~int sample_rate: rate: sampling frequency, in samples per second
Hi - this review is strictly of the API and documentation, and not the implementation. Thank you for working on this!
I am still trying to think of the best names for the module and the class. You mentioned DAC at one point. Many chips don't have a DAC, but for those that do, this could be a combined module named, say, bufferedanalogio. It would have classes BufferedAnalogIn and BufferedAnalogOut, to match analogio and its AnalogIn and AnalogOut. Comments from everyone on the n...
This implementation uses DMA, but another implementation might not, so don't specify it's DMA.
//| """Capture multiple analog voltage levels to the supplied buffer"""
Mention in the doc that the samples are signed or not depending on the type code of the buffer. Also, if it's a bytearray, are they signed or unsigned?
it appears my python env on my vbox ubuntu is truly hosed. Cant remove the deadsnakes/ppa; can't install module apt-pkg; a real mess. All my files are pushed to github, so not worried about my files. What can be done? (Is this the correct channel?)
Turns out we already have one duplicate, so I 'endorsed' it, but probably
one should be reassigned.
Before I did so it printed a new (and slightly misleading, since it says VID/PID) message:
Duplicate VID/PID usage found!
- VID/PID: 0x70010001:0x00100001
Boards: ai_thinker_esp32-c3s, ai_thinker_esp32-c3s-2m
so it's working.
Closes: #8628
CircuitPython version
Adafruit CircuitPython 8.0.0-beta.0 on 2022-08-18; Adafruit Feather ESP32-S2 TFT with ESP32S2
Code/REPL
import time
import wifi
import mdns
from secrets import secrets
MDNSFINDTIMEOUT = 5
time.sleep(5) # connect serial
# to connect in case CP8 web workflow hasn't already
if not wifi.radio.ipv4_address:
print (f"{time.monotonic_ns()} Connecting to wifi AP ... ", end="")
wifi.radio.connect(secrets["ssid"], secrets["pass...
Pico w
- Article usage:
make sure device-->make sure the device - Article Usage:
make sure that functionality-->make sure that the functionality - Hyphen before noun:
Terminal related-->Terminal-related - Incorrect present progressive tense:
mounting and unmount-->mounting and unmounting
[adafruit/circuitpython] Pull request review submitted: #6833 Fix typos and grammar in design\_guide
Thanks for these touchups!
in this case, we mean "functionality [in general] shared with CPython", and the omission of "the" is fine.
out from this first step, make sure that functionality shared with CPython shares
Done, feel free to merge!
Approving, but not merging: if we have a duplicate, I think it would be better to fix that now, when the whole thing is still really early, rather than live with it.
the returned tuple is the same as in normal python.
Of which, the following are probably properly populated:
os.stat()[0] file type, regular or directory.
os.stat()[6] file size
os.stat()[7], os.stat()[8], os.stat()[9] are all the same and tell the modification time. For that value to be correct, the time has to be set.
"See the documentation for instructions."));
Missing a )
I'm not sure where else to ask but you may find more help weekdays when it comes to a problem like this.
For good or bad I've recreated my VM before when I truly messed it up.
Made the pulsein object long-lived so it persists across imports. I did not find any boards that used the pulsein object as input to an interrupt handler, but creating the object in one script and then importing that script will cause hangs, crashing into safe mode, etc.
Fixes #6565
Agreed
I will change my review to Request Changes to remind us.
Thanks @DavePutz! And just to be clear, after making this change, did the problems you mentioned go away?
@dhalbert - yes, this fix takes care of the problem. I should have made that clearer, sorry.
are there nightly uploads of builds for 7.3.x?
what are you looking for ?
there are no nightly builds in CP, every PR merge is built and uploaded, but that's on main, I don't think the branches are on S3 until there's a release, but the artefacts are in the PR
i want to test a fix for a bug i reported
do you have the PR ?
yeah, i think i located the PR artifacts (or more precisely, ones for a subsequent PR, because the PR itself got some internal GitHub Actions errors)
I found the build artifacts, and successfully tested the tone service against iOS Bluefruit Playground and the Web Bluefruit Dashboard. Thanks!
You might want to manually link this issue to #6800, because GitHub didn't do it automatically. (The PR is not targeted at the default branch of the repository, etc.)
[adafruit/circuitpython] New comment on pull request #6831: Check uniqueness of creatorid:creationid
I've pinged the board's creator for an allocation.
there's not an "egg on face" emoji but there should be
Just so I understand, I was using "board.DISPLAY.brightness" to adjust the brightness on my ESP32-S3 TFT and after the autobrightness removal, I can't adjust it at all now. Was this intended? I understand the autobrightness doesn't work, but I was not expecting the "manual" brightness setting to be removed entirely as well.
Are versions of CP older than what's on S3 available somewhere?
Kubuntu 22.04 trying to do esp-idf/install.sh I'm getting
pip 22.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10)
Creating a new Python environment in /home/helen/.espressif/python_env/idf4.4_py3.10_env
ERROR: Could not install packages due to an OSError: [Errno 13] Permission denied: '/usr/local/lib/python3.10/dist-packages/distutils-precedence.pth'
Consider using the `--user` option or check the permissions.
Seems like it is trying to install as my user except goes wrong there?
@cedar veldt I haven't seen that message before. It's similar to https://github.com/espressif/esp-idf/issues/9049 but that issue was closed without really getting to the root cause
GitHub
OS: Ubuntu 22.04 LTS Commit: 179ea87 Python: 3.10 install.sh script raised this error during the python virtual environment creation: Installing Python environment and packages pip 22.1.1 from /usr...
Can you do virtualenv --reset-app-data venv -vvvv and see if the problem still persists? If does please post the json file with the python info (path can be found in the output of -vvv)
Maybe try this @cedar veldt (but with /home/helen/.espressif/python_env/idf4.4_py3.10_env
in place of venv, probably)? It's a guess but could be worth a try. Removing /home/helen/.espressif/python_env/idf4.4_py3.10_env
manually and starting fresh might be worth trying too
Removing the folder didn't make any difference
And the other thing didn't either, but I guess it wouldn't if removing the folder doesn't
It's odd because pip has been using --user by default for everything else so far
I don't have any other ideas right now, shoot.
Thanks, and thanks for testing!
[adafruit/circuitpython] New comment on pull request #6831: Check uniqueness of creatorid:creationid
Ah, I thought we had assigned it.
Just so I understand, I was using "board.DISPLAY.brightness" to adjust the brightness on my ESP32-S3 TFT and after the autobrightness removal, I can't adjust it at all now. Was this intended? I understand the autobrightness doesn't work, but I was not expecting the "manual" brightness setting to be removed entirely as well.
That was not the intention. I tested it with a PyPortal, but not an ESP32-S3 TFT. Could you open an issue with a small test program? Thanks.
Hm, that didn't close it? Let's see if this does.
I will add this to 7.3.3 as well.
[adafruit/circuitpython] New comment on pull request #6831: Check uniqueness of creatorid:creationid
It looks like the structure is that some creators have their creationids within the "creationid" organization but others like skieast don't. I'm not sure why, or which is preferred in the long run.
Looks good now. One build was stuck so I restarted it but should be good to merge after it completes.
[adafruit/circuitpython] New comment on pull request #6831: Check uniqueness of creatorid:creationid
It looks like the structure is that some creators have their creationids within the "creationid" organization but others like skieast don't. I'm not sure why, or which is preferred in the long run.
I really don't know why I did it that way. Probably at the time there were no other creationids allocated so i did it 'a' way. I can change this to whatever is currently the accepted method.
Closing. Appears to have been some difference in range, wifi environment, or device issue. Testing in another environment with several devices does not show the issue.
CircuitPython version
Adafruit CircuitPython 8.0.0-beta.0-15-g63239894e-dirty on 2022-08-28; AI-Thinker ESP32-CAM with ESP32
Code/REPL
import board
import busio
import esp32_camera
cami2c = busio.I2C(board.CAMERA_SCL,board.CAMERA_SDA)
camera=esp32_camera.Camera(data_pins=board.CAMERA_DATA, pixel_clock=board.CAMERA_PCLK,
vsync=board.CAMERA_VSYNC,href=board.CAMERA_HREF, i2c=cami2c,
external_clock...
The first means there are no more peripherals available. The second means you chose pins for a particular peripheral instance that is already in use. For example, on RP2040 you chose pins assigned to I2C0, which happened to already be in use, but I2C1 might be free.
On the oldest boards there are OLD folders, e.g.: https://adafruit-circuit-python.s3.amazonaws.com/index.html?prefix=bin/gemma_m0/en_US/OLD/
If you click on the Actions tab for the PR, and find the Summary for Build CI, scroll down, and you will see the Artifacts available to download.
thanks, right there at the top, totally missed it
lol, of course, there's nothing older for the board I was looking at
If it's important that these messages be distinct then close this up... I made this issue without checking into it deeply.
locale/circuitpython.pot:msgid "%q in use"
locale/circuitpython.pot:msgid "A hardware interrupt channel is already in use"
locale/circuitpython.pot:msgid "All CAN peripherals are in use"
locale/circuitpython.pot:msgid "All I2C peripherals are in use"
locale/circuitpython.pot:msgid "All I2C targets are in use"
locale/circuitpython.pot:msgid "All PCNT units in use"
locale/circuitpython.pot:msgid "All RX FIFOs in use"
locale/circuitpython.pot:msgid "All SPI peripherals are in use"
l...
[adafruit/circuitpython] New comment on pull request #6831: Check uniqueness of creatorid:creationid
skieast isn't the creator of either of these boards (it's "ai-thinker technology") though the allocation for the first board went via their creatorid.
should the new allocation go in espressif, since that's who the microcontroller is from? or should a new creatorid be allocated for ai-thinker?
if the answer's not clear cut I may suggest that we merge this as is (approving the current conflict) and just open a fresh new PR to get the conflict fixed. But that depends on the "cost" of chan...
[adafruit/circuitpython] New comment on pull request #6831: Check uniqueness of creatorid:creationid
should the new allocation go in espressif, since that's who the microcontroller is from? or should a new creatorid be allocated for ai-thinker?
I think it should go in https://github.com/creationid/creators under the manufacturer, making a new creator ID if necessary. I don't think https://github.com/skieast/creations/ is the right place.
Note that there were multiple manufacturer repos in https://github.com/creationid, but then @tannewt archived them, and put everything in one repo.
...
I'm building a small step sequencer + synthesizer using raspberry pico. This project involves keypad+encoder, screen and audio output. Currently, everything is running in just 1 core and sometimes the audio glitch because of heavy UI rendering. It's will be best if I can utilize the second core for just audio processing while the first core is dedicated to handling user input and UI rendering. By utilizing the second core, maybe more advanced audio processing can be archivable.
I tried compiling in camera support, but I'm kind of going in blind. I usually don't buy these boards with the camera and I actually only have a single camera module.
After working out the errors in the documentation I am getting the following when I try to run this code from the camera-enabled build:
import board
import busio
import esp32_camera
cami2c = busio.I2C(board.CAMERA_SCL,board.CAMERA_SDA)
while not cami2c.try_lock():
pass
print(cami2c.scan())
camera=es...
The camera module should be seen by the scan(). The error from esp-idf is because it didn't detect any camera.
I noticed in #6827 no error occurred when the locked i2c bus was used in constructing the camera object. I think it should have failed with an error.
the camera module skips using common-hal functions for i2c bus access, so it doesn't get the checks that normally live at that level.
So, looks like esp32_camera has to manually do locking anytime the i2c bus might get touched, which is in the initialization, getters, and setters.
CircuitPython version
Version: 8.0.0-beta.0
Code/REPL
import time
import board
import adafruit_si7021
import digitalio
import busio
import displayio
import sensorDataDisplay
import alarm
import neopixel
from adafruit_displayio_layout.layouts.grid_layout import GridLayout
# The battery sensor is current broken and needs to be fixed in the firmware.
env_sensor = adafruit_si7021.SI7021(board.I2C())
# battery_sensor = LC709203F(board.I2C())
#...
[the previous link was incorrect; use this link] Here is the notes document for todayโs [Aug 29] CircuitPython Weekly meeting. It is at the normal time of 11am Pacific / 2pm Eastern here on Discord. Everyone is encouraged to attend! Please add your hug reports and status updates even if youโll be attending the meeting - itโs super helpful! If you are unable to attend but would still like to include updates, feel free to include them in the notes and weโll read them off during the meeting. Hope to see you there! <@&356864093652516868>
https://docs.google.com/document/d/1TLaYXH680L-YaV9_WvGFxDAMRFgZM3VqlhbdDO0KVa8/edit?usp=sharing
Google Docs
CircuitPython Weekly Meeting for August 29, 2022 Welcome to the CircuitPython Weekly meeting notes! Feel free to add your Hug Reports and Status Updates early. During the meeting, we go through them as a round robin sorted by username. If you canโt make the meeting and would still like to parti...
@tulip sleet is the previous doc still available some where? I think I had put in a hug report earlier in the week. I might also be mis-remembering though.
I accidentally linked to the template: I will copy from the template into the real one and clean up the template
I thought the template was read-only to most people, but that wasn't true
@lone axle ok, not that much to copy over, all cleaned up
Thank you. I didn't even notice the title being template when filled it in ๐
I often forget and edit the template. I will add something more obvious to the template that makes it clear it's the template
My old manager used to do that with templates all the time
It is shared the same way as the notes doc so you can click "Share as configured" or whatever, and the notes doc will be shared the same way, and you don't have to deal with it. I will recreate it. It can't be made public.
Done.
Oh, I noticed that it was saying "Hosted by FIXME" and I wanted to say it here... maybe that explain a lot. Thanks for copying over my notes. ๐
Wow! ESP32 support is rad. Can I donate a board for you to test with? These are such fun little boards, the screen is so sharp!
@lone axle I updated the library update comment, every library did get updated - twice I believe ๐
This comment seems to fix it for me too https://github.com/espressif/esp-idf/issues/9049#issuecomment-1140297810
Suggestions for the build guide:
It would be helpful to have a warning at the start that this will take a lot of disk space. I made my VM too small on my first attempt. My VM home directory is 7 gigabytes now and it's almost all for this.
Ubuntu 22.04 does already have version 4.2 of mkfs.fat .
The "Build CircuitPython" section sort of implies that all the boards are SAMD. Might be useful to have an explanation that this is an example for the SAMD boards and you do the analogous thing for other ports.
As somebody said recently, to build the docs it seems we need to do make html in the top-level circuitpython directory.
@tulip sleet
I seem to have got there now, thanks ๐
Thanks - could you use the Feedback link at the bottom of the left sidebar and paste this in? Then I will have a more permanent note to address. ... Glad its working for you!
OK, I see it
@gilded cradle Any idea why we're not hosting the CircuitPython bins for bare ESP32 boards on circuitpython.org/downloads ? They currently are only available on the S3 bucket. Wondering why we haven't included them on /downloads yet.
Not completely sure, but it's likely because it's a new architecture and hasn't been added to the if statement.
It's automatic
Hmm alright.
I can take a look in a bit. It's likely something pretty quick.
This one is there: https://circuitpython.org/board/adafruit_feather_huzzah32/
i don't see esp32 v2
That would be amazing, I'm doing a guide with the ESP32 V2 Feather, and would prefer to link to /downloads
I don't see it either
Which prompted asking
this seems like it might be a typo or something
considering the HUZZAH32 is there.
We should probably fix it so we can link to /downloads like everything else.
Also, create a new install template, heh.
after the meetings i can take a look and or @gilded cradle can
[adafruit/circuitpython] New comment on pull request #6831: Check uniqueness of creatorid:creationid
If you need help with the Creator stuff, feel free to ping me. Tannewt and I evolved that process into the single repo approach you see now.