#circuitpython-dev

1 messages ยท Page 6 of 1

orchid basinBOT
thorny jay
#

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.

orchid basinBOT
orchid basinBOT
#

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...

edgy flax
#

@lone axle, @proven garnet don't forget that the TLV493D PR you just approved and closed resolved the annotation issue (still open)

proven garnet
modern hemlock
#

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'
stuck elbow
modern hemlock
#

I think so, let me try those again

stuck elbow
#

also, the version of gcc you are using seems wrong?

edgy flax
stuck elbow
#

you need 10.3-2021.07

modern hemlock
#

I'm just using the one built in to MacOS, where would I get the correct version?

spiral elk
#

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.

modern hemlock
#

Is this like the ARM Cortex-M Toolchain thing?

#

Do I have the wrong version of that?

stuck elbow
#

seems like it

spiral elk
#

Using the OS bundled toolchain invariably doesn't work

stuck elbow
#

which port are you building?

modern hemlock
#

QT Py M0

jaunty juniper
#

I believe Scott uses 11 (on linux) without issues, but I stayed with gcc-arm-none-eabi-10.3-2021.07

stuck elbow
#

then you want the 10-2020-q4-major

jaunty juniper
stuck elbow
jaunty juniper
#

I don't know if that's your issue though

stuck elbow
#

could also be that mpy-cross needs rebuilding?

jaunty juniper
#

yeah the CI goes for gcc-arm-10.3-2021.07

stuck elbow
#

maybe the build instructions should be updated

jaunty juniper
#

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

modern hemlock
#

Where do I download the Mac version? I can only find the Linux version.

jaunty juniper
#

though locally I do build M0 and M4 with 10.3-2021.07

jaunty juniper
stuck elbow
#

search for "Mac OS X 64-bit Tarball"

jaunty juniper
modern hemlock
#

What page is that on?

stuck elbow
modern hemlock
#

Oh I see, I clicked on the link at the top saying it was depracated

manic glacierBOT
#

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...
modern hemlock
#

And ended up at the wrong thing

jaunty juniper
#

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)

modern hemlock
#

Yeah I'm still getting the same errors

manic glacierBOT
jaunty juniper
#

did you try a normal build first ?

modern hemlock
#

No, that's a good idea

#

A normal build worked

stuck elbow
#

what did you change?

hidden rain
#

Last push has not spawned a build on y PR. Is there a delay?

modern hemlock
#

I disabled some of the included modules and added some frozen modules

stuck elbow
#

the included modules have dependencies between them, which are not automatically resolved

modern hemlock
#

I reenabled some of them and that seems to have fixed it. Thanks for your help @stuck elbow @jaunty juniper

orchid basinBOT
#

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...

hidden rain
hidden rain
#

wow! looks like pre-commit success! Thanks!

onyx hinge
#

if I set CIRCUITPY_RESERVED_PSRAM=0 in CIRCUITPY/.env and hit the reset button I get the "generic failure" message

solar whale
onyx hinge
#

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

solar whale
#

yes -- the web wokflow works fine.

#

It seems like it is a memory issue on the Kaluga...

onyx hinge
#

Only 2MB PSRAM while I think the EYE has 8MB so it could be

solar whale
#

@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?

onyx hinge
#

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.

solar whale
#

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.

onyx hinge
#

@tulip sleet do you have insight into what "Repeated socket failures" actually means?

solar whale
#

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))

onyx hinge
#

@solar whale did changing the amount of reserved RAM up to 1MB as I am using on esp32-s3-eye make a difference?

solar whale
#

no -- I even tried up to 1.5Mbyte

onyx hinge
#

OK

solar whale
#

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

onyx hinge
#

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

solar whale
#

and if I swap the order of camera and mqtt init, then the camera fails with the"general Failure"

onyx hinge
#

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.

solar whale
#

If I don't reserve any memory the camera alwasy fails. The above code works with 512K

onyx hinge
#

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

solar whale
#

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?

onyx hinge
#

it is automatic

#

it is detected by probing the i2c bus

solar whale
#

I love magic ๐Ÿ˜‰

onyx hinge
#

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.")
+    }
solar whale
#

I suppose you could shorten it to RTFM....;-)

manic glacierBOT
tulip sleet
tulip sleet
tulip sleet
jaunty juniper
#

no news == good news ๐Ÿ˜‰

hidden rain
tulip sleet
#

np, if it passed and you're done, you could ask for reviews

solar whale
#

@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...

manic glacierBOT
idle owl
onyx hinge
#

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"

manic glacierBOT
#

@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...

tulip sleet
#

@deep haven ^^ see above re ESP-IDF 4.4.2 and LC709203F on ESP32-S3; still doesn't work

manic glacierBOT
proven garnet
#

@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!

crimson ferry
#

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?

jaunty juniper
#

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

crimson ferry
#

ohhh, tricky

#

that's pretty handy

manic glacierBOT
#

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.

orchid basinBOT
onyx hinge
#
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
stuck elbow
#

maybe they based it on javascript

onyx hinge
#
    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

stuck elbow
#

obviously

uncut nexus
#

@tulip sleet - do you have a minute for a consult?

tulip sleet
#

sure

uncut nexus
#

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)?

tulip sleet
#

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

uncut nexus
#

OK, will do.

tulip sleet
#

thanks for working on this!

uncut nexus
#

np

manic glacierBOT
#

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(...
onyx hinge
#

I had briefly thought maybe I had a super easy reproducer of the esp32-eye problem but .. no. it was bigger than that.

manic glacierBOT
orchid basinBOT
manic glacierBOT
idle owl
#

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.

jaunty juniper
#

what board on what build ?

idle owl
#

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.

manic glacierBOT
jaunty juniper
#

you reset the board ?

idle owl
#

Yah a few times.

jaunty juniper
#

I would check in the REPL with:

>>> import os
>>> os.getenv("CIRCUITPY_WIFI_SSID")
idle owl
#

Ok

#

Returned nothing.

#

Is there a way to list the drive contents from the REPL?

#

I feel like yes

jaunty juniper
#

os.listdir()

idle owl
#

The file is there.

jaunty juniper
#

>>> open(".env","r").read()

idle owl
#

Returns the contents of the .env file

jaunty juniper
#

check that you used single quotes ? that was my mistake at first (using double doesn't work)

idle owl
#

I had to change it to double quotes because my SSID has an apostrophe in it.

#

OK, how do I fix that

jaunty juniper
#

I think you can just remove the quotes

idle owl
#

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.

jaunty juniper
#

๐Ÿ“ก

idle owl
jaunty juniper
#

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

idle owl
#

Fair enough.

tulip sleet
#

@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

idle owl
#

@jaunty juniper Thank you so much! I'm editing code.py now. Whew!

idle owl
#

@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.

manic glacierBOT
#

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...

jaunty juniper
#

oh but that one takes double quotes

#

so, is it a bug then ? ๐Ÿคท

onyx hinge
idle owl
#

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.

tulip sleet
#

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

manic glacierBOT
tulip sleet
#

@idle owl did you do the "restart back end" or whatever in thonny

idle owl
#

There's a blinky LED!

idle owl
tulip sleet
#

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

onyx hinge
#

#6751 maybe

idle owl
#

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.

onyx hinge
#

#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 ^^

tulip sleet
#

thanks, I will look at backporting those

jaunty juniper
#

I was thinking of 6751 too

idle owl
#

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?

jaunty juniper
#

not yet, I don't think any library has been changed to use .env

idle owl
#

Ok

#

Thanks

jaunty juniper
#

unless portalbase automatically takes the existing connection when it tests if it's already connected ?

idle owl
#

This won't use PortalBase anyway.

crimson ferry
#

have we standardized on .env keys for SSID & password when we don't want wifi auto-connect / web workflow?

#

(straight secrets.py replacement)

idle owl
#

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.

tulip sleet
#

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)

crimson ferry
#

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

tulip sleet
#

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)

crimson ferry
#

that works:```py

web workflow active via .env file

import wifi
wifi.radio.ipv4_address
192.168.6.178

connect to an alternate SSID

from secrets import secrets
wifi.radio.connect(secrets['ssid'], secrets['password'])
wifi.radio.ipv4_address
192.168.17.241

idle owl
#

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.

jaunty juniper
#

what says busy ?

idle owl
#

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.

jaunty juniper
#

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

idle owl
#

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.

jaunty juniper
#

it does, maybe Thonny doesn't notice, I would try (again ?) to stop/restart the backend ? ๐Ÿค”

idle owl
#

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.

jaunty juniper
#

that's what I got:

idle owl
#

I was there earlier. It isn't working anymore.

#

I've never seen that files menu though.

#

Panel I mean.

jaunty juniper
#

View > Files

#

ah I see, when there's an exception, it doesn't like it

idle owl
#

OK I really fast hit enter as it was restarting, and got into the REPL.

jaunty juniper
#

added an error in my code and that causes the symptoms you see

idle owl
#

Uffff.....

#

That's... not great.

jaunty juniper
#

maybe because the status bar has changed to include error codes

idle owl
#

Also, it says in REPL, but I can't interact with it, and it says busy now ๐Ÿ˜ฆ

#

So that didn't work.

jaunty juniper
#

I would open an issue about it, maybe look into the PR that added support for the status bar to Thonny

idle owl
#

Sigh. Ok. What do I do in the meantime?

jaunty juniper
#

errrrr

#

oh maybe it's the board that locks up and not Thonny ?

idle owl
#

:grumpy face:

#

I mean, web workflow isn't working either right now. But I blamed Thonny on that earlier.

manic glacierBOT
idle owl
#

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.

jaunty juniper
#

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 ๐Ÿค”

idle owl
#

That would be nice.

jaunty juniper
#

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

idle owl
#

Haha. That would do it.

tulip sleet
#

@idle owl I will make a .env variable PR soon to turn off the status bar so you can work around this for now.

idle owl
jaunty juniper
#

I don't know if it's the title bar actually, I tried an earlier build, but it was hanging, maybe for other reasons

manic glacierBOT
hidden rain
#

Thanks guys. Most like not able to see the obvious anymore. Has anyone compiled and tried it?

tulip sleet
#

thanks very much for working on this

blissful pollen
#

And I completely get what you mean by staring at something so long you no longer see the obvious!

manic glacierBOT
orchid basinBOT
spiral elk
#

@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?

manic glacierBOT
#

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...
manic glacierBOT
#

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

https://github.com/adafruit/esp-idf/blob/d51f7d882187afa4b39c2613fd0fe2ac2fea1145/components/mbedtls/esp_crt_bundle/cacrt_all.pem#L3193

Ran using

echo $CERT_TEXT | openssl x509 -inform pem -noout -tex...
manic glacierBOT
#

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?

onyx hinge
main furnace
#

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.

jaunty juniper
#

like by running CP on the airlift ?

main furnace
#

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.

manic glacierBOT
onyx hinge
#

@tulip sleet do you need reviews from me today? I'm guessing yes.

#

(gm)

tulip sleet
#

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

onyx hinge
#

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

tulip sleet
#

the main thing is the amount of time it takes for all the CI runs

onyx hinge
#

9167 files changed, 6 insertions(+) well those are some big changes (renames)

tulip sleet
#

what are you rebasing?

onyx hinge
#

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)

manic glacierBOT
#

@litui Sorry I dropped the ball on reviewing this after returning from vacation. Couple of questions:

  1. Are the timing values counts or actual durations? (I could research this but you would know immediately).
  2. 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.
orchid basinBOT
orchid basinBOT
onyx hinge
#

@tulip sleet should I use dotenv or os.getenv? ```aio_username = dotenv.get_key('/.env', 'AIO_USERNAME')

tulip sleet
#

I think os.getenv is more general, and could be used with blinka in case someone wanted to set a shell env

onyx hinge
#

os.getenv('AIO_USER_NAME') then?

tulip sleet
onyx hinge
#

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)

tulip sleet
#

makes sense you can still ask for comments when a draft

#

"I'm keeping this PR all to myself. Go away!" ๐Ÿ˜†

manic glacierBOT
idle owl
#

@tulip sleet Did you end up putting in a PR to add a .env variable to disable the info bar?

tulip sleet
#

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

idle owl
#

That would be great.

tulip sleet
#

which board(s)?

idle owl
#

Feather ESP32 V2

idle owl
#

Thank you, @tulip sleet!

#

@tulip sleet Thonny seems immensely happier. I introduced an error, and it's working as intended.

tulip sleet
#

we'll have to figure out why errors confuse its interpretation of the status bar

idle owl
#

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.

tulip sleet
#

file it on circuitpython for now, because we probably just need to submit a new PR to thonny

#

just to get it recorded

idle owl
#

Ok, will do. Thanks.

digital ibex
#

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.

idle owl
ornate breach
#

I personally would merge it so the builds are available

#

That way I donโ€™t have to always build a new version

idle owl
#

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.

digital ibex
idle owl
#

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.

tidal kiln
#
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
>>> 
#

๐Ÿ˜ฆ

idle owl
#

@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.)

jaunty juniper
idle owl
#

Yes! Thank you!

#

(filing an issue and wanted to be accurate.)

jaunty juniper
#

line@file ExceptionName

tulip sleet
#

about to be afk for a while; thanks @jaunty juniper

idle owl
#

Back.

manic glacierBOT
#

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...

tulip sleet
#

@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/2920905948

The PR says that the subjobs build-aarch andbuild-armare Expected โ€” 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.

tulip sleet
#

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

hidden rain
#

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?

onyx hinge
#

@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

hidden rain
#

Gotcha! Code cleaning....while I whistle ... Thanks!

onyx hinge
#

welcome

manic glacierBOT
#

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...

orchid basinBOT
manic glacierBOT
idle owl
#

Does Thonny or the web workflow support multiple boards connected to your computer?

jaunty juniper
#

yup

random junco
#

yes, the web workflow will show you different boards on your network

idle owl
#

How does Thonny do it?

jaunty juniper
#

you select the port in the bottom right with Thonny

idle owl
#

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

orchid basinBOT
manic glacierBOT
#

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...

#

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...

manic glacierBOT
#

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

hidden rain
#

Trying to clean up my local repo ... very little response on help-with-git

idle owl
idle owl
manic glacierBOT
proven garnet
#

this If anyone wants to cancel the CI for this, it's a small documentation-only PR. Don't want to clog the CI tubes!

onyx hinge
#

and I can't say "no who cares" at the merge prompt either

tulip sleet
#

We can change some settings to allow merging.

onyx hinge
#

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?

tulip sleet
#

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.

#

it skipped arm and aarch

manic glacierBOT
tulip sleet
#

I don't see any issues in the arm logs for 8600. it's very weird

blissful pollen
#

I can hold off merging #6807 until you work out what is going on in case something weird comes up?

tulip sleet
#

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.

tulip sleet
onyx hinge
#

8600 is also stuck, but only half-stuck @tulip sleet

tulip sleet
#

the espressif builds don't get stuck, but arm and aarch always do. It's really odd.

onyx hinge
#

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

tulip sleet
#

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

manic glacierBOT
hidden rain
manic glacierBOT
#

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...

manic glacierBOT
main furnace
#

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.

main furnace
#

Yeah, that should work. Thanks!

tulip sleet
#

@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-aarch and build-arm but 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 *.x branch 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.

manic glacierBOT
tulip sleet
#

@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.

stuck elbow
#

should work with any version that has keypad

#

that was the latest incompatible change

tulip sleet
#

that's good, wasn't sure if you made an 8.0.0-only change

stuck elbow
#

sure, thanks for asking

onyx hinge
tulip sleet
#

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.

onyx hinge
#

I see github has started adding nags about unprotected branches; it creates the urge to do something

onyx hinge
#

I'll go look at those reviews right now...

tulip sleet
#

yes, four 7.3.x, thanks

onyx hinge
tulip sleet
#

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.

manic glacierBOT
onyx hinge
#

one that I had a tiny q about, but testing trumps my vague concern.

manic glacierBOT
#

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.

#

Looks like it's this. Since the max value of duty_cycle is 0xFFFF, I think the answer for that should be 100%, but it's 99. Should we divide by 0xFFFF instead of 1 << 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.

blissful pollen
edgy flax
lone axle
idle owl
#

@tulip sleet Let me know if/when you put in the PR to allow disabling the status bar so I can test it. Thanks!

tulip sleet
# idle owl <@329766224093249548> Let me know if/when you put in the PR to allow disabling t...

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)

idle owl
#

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.

tulip sleet
#

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.

idle owl
#

Oh.

#

Fair enough.

#

Yeah, supervisor makes sense to me.

tulip sleet
#

but that means supervisor.status_bar() might need to be in boot.py to get it right (esp for display status bar enable/disable)

idle owl
#

That's fine, frankly I like that better than in code.

tulip sleet
#

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

idle owl
#

I've kind of wondered the same thing.

tulip sleet
#

and there already is dotenv support in CPython

idle owl
#

But that's obviously not my decision.

#

I'll be back in just over an hour. I have an appt.

tulip sleet
#

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

onyx hinge
#

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?

tulip sleet
#

.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.

onyx hinge
#

If you think it's good to change it at runtime then go with supervisor. I wasn't considering that angle.

tulip sleet
#

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

jaunty juniper
tulip sleet
#

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

jaunty juniper
#

wasn't the original motivation to replace secrets.py ? for potential C-python name conflicting reasons, and security (using environment variables on linux)

tulip sleet
#

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

jaunty juniper
#

for the display, display.root_group would be the way to hide it

#

though that's a little low-level-not-really-documented

tulip sleet
#

i haven't looked yet to see how it's set up

tidal kiln
#

@idle owl ping. got non-urgent library question.

idle owl
#

@tidal kiln pong.

tidal kiln
#

hey. so, gonna give this MSA301 lib some attention.

idle owl
#

Yeah

tidal kiln
#

one thing is renaming it. lookin for your help on that.

#

for bundle, etc.

idle owl
#

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.

tidal kiln
#

oof. sounds like this hasn't been done much before?

idle owl
#

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.

tidal kiln
#

i'm thinking getting through the rename process first

idle owl
#

So I at least know what you're talking about.

#

That makes sense.

tidal kiln
#

initially it'll just be what the current repo is

#

and can then PR to that new repo with all the updates

idle owl
#

Yeah ok. That's done in Settings. Do you have access to that?

tidal kiln
#

yep. i think that'll be the easiest step ๐Ÿ™‚

idle owl
#

For sure.

tidal kiln
#

bundle/RTD/pypi - not so

idle owl
#

Also the old links will still work for now. No idea when GitHub stops redirecting.

idle owl
#

Shouldn't be too bad though.

tidal kiln
#

i guess let's get the easy rename taken care of at least

#

Adafruit_CircuitPython_MSA3XX ?

#

Adafruit_CircuitPython_MSA3X1 ?

idle owl
#

Um... Limor would know that better than me. What chips might be added in the future.

tidal kiln
#

Adafruit_CircuitPython_YYYXXX ? ๐Ÿ™‚

idle owl
#

Hah!

#

But then we'd want that for all the libs ๐Ÿ˜„

tulip sleet
idle owl
#

Thanks, Dan!

tidal kiln
#

ah cool. can just direct edit the files. yah easy.

tulip sleet
#

I did not know that it was discontinued

idle owl
#

Disco!

tulip sleet
#

@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

tidal kiln
#

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.

idle owl
#

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.

tulip sleet
#

this is ESP32xx?

idle owl
#

ESP32 V2.

tulip sleet
#

I do not see that ever should have worked, hmm...

idle owl
#

Oof.

tulip sleet
#

where is the previous Learn exmple

tulip sleet
#

yeah lotsa places

idle owl
#

These for sure worked when I wrote them.

#

Yeah, those are the two I had open. So I shared both.

tulip sleet
#

did you say socketpool.SocketPool(wifi.radio) or socketpool.Socket(wifi.radio)

#

in PyCharm?

idle owl
#

pool = socketpool.SocketPool(wifi.radio)

tulip sleet
#

I was looking at socketpool.Socket(0 by mistake

#

could you show the PyCharm screenshot?

idle owl
#

Yes

#

That's when you hover over it

#

But it's highlighted as an error.

tulip sleet
#

There is no signature for def __init__() in the SocketPool doc. That is a mistake, and maybe why it is is complaining.

idle owl
#

Hmm.

tulip sleet
#

I don't think anything changed in CircuitPython

idle owl
#

So, it should work, but the docs are borked, and so PyCharm is complaining?

tulip sleet
#

right;

idle owl
#

Ok. I'll ignore PyCharm for now then.

#

Thanks!

tulip sleet
#

I'll open a doc issue about it

idle owl
#

Thank you

manic glacierBOT
tulip sleet
#

@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

idle owl
#

How will that work in practice

tulip sleet
#

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

idle owl
#

Right

tulip sleet
#

could also do if supervisor.runtime.console_status_bar: ...

idle owl
#

Ah fair enough

#

Not entirely sure what you'd do with that, but nice to have

tulip sleet
#

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).

idle owl
#

Ah ok

tulip sleet
#

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

idle owl
#

I think that works. Goes in code.py?

tulip sleet
idle owl
#

I'd prefer boot, but that's me.

tulip sleet
#

it would certainly work in boot.py, the q is whether it can also work in code.py; i am just doing the Python interface part right now

idle owl
#

Fair

tulip sleet
#

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

idle owl
#

Hmm, that wouldn't use .runtime then?

tulip sleet
#

right, could be separate

idle owl
#

Not sure what that means for the backend situation.

tulip sleet
#

not a lot, functionally, it's more code and strings

idle owl
#

I like the .status_bar.console etc better, but if the .runtime versions are cheaper, go with .runtime.status_bar_console

tulip sleet
#

i'll see how much cheaper

#

API design is not easy

idle owl
#

Indeed.

tulip sleet
#

@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

idle owl
#

That's a good idea.

onyx hinge
#

ah github, don't change (please don't get slower)

tulip sleet
#

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

idle owl
#

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

crimson ferry
#

alarm.sleep_memory persists across deep sleeps and reloads (but not resets)

idle owl
#

Right

manic glacierBOT
#

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...

idle owl
#

I kind of get what it does

#

but not what it's specifically doing here.

crimson ferry
#

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

idle owl
#

Ah fair enough

idle owl
#

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.

crimson ferry
#

ESP32 Feather? You could test it on a native board, then move it over.

idle owl
#

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.

manic glacierBOT
tulip sleet
#

it has to use a different mechanism to detect the ctrl-c than would be used on USB-capable boards like ESP32-S2

crimson ferry
cedar veldt
#

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.

tulip sleet
tulip sleet
#

I am updating the guide to 22.04

manic glacierBOT
spiral elk
#

Is anyone else taking care of the creationid/creators repo while scott's on leave?

tulip sleet
#

@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.

tulip sleet
manic glacierBOT
#

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...

onyx hinge
#

@spiral elk @tulip sleet I was supposed to be covering that repo but I must also not have been subscribed to notifications.

spiral elk
hidden rain
#

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?

manic glacierBOT
blissful pollen
#

make html I believe builds it all, but I always forget myself so someone may have a better command

onyx hinge
#

yes, "make html" in the top directory I think is right. pip install -r requirements_doc.txt first.

idle owl
idle owl
manic glacierBOT
stuck elbow
#

I am happy to note that the interrupt problems that made ugame unusable with 7.x are fixed somehow in 8.x

proven garnet
#

I also use sphinx-build -E-W -b html . _build/html that the CI uses. Is there a difference between that and make html?

proven garnet
idle owl
#

๐Ÿ™‚ Yep.

#

make html is in the core only.

#

Basically runs a sphinx build though.

lone axle
#

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.

blissful pollen
#

I would also run into little things I'd forget or did wrong that make html would just get working for me

tulip sleet
#

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."
idle owl
#

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))

tulip sleet
idle owl
tulip sleet
#

second f is for float

#

it's the type specifier

idle owl
#

Ahhh ok

#

That worked. Thank you!

manic glacierBOT
onyx hinge
#

"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"

tame creek
#

funny how all 3 (?) major string formatting sublanguages in Python seem to derive from C printf format specifiers

stuck elbow
#

struct and array use the same formats, as well as numpy or ulab

tulip sleet
#

similar syntax was even used in FORTRAN (1950's) and probably other languages around that time. In FORTRAN the f comes first.

stuck elbow
#

I think the type of the variable depended on what letter it started with, no? Hence "i" used traditionally in loops.

tulip sleet
#

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

digital shoreBOT
blissful pollen
#

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

tulip sleet
#

I learned Fortran from the book mentioned above, in 1970.

minor plume
#

Iโ€™ve never learned FORTRAN, really, but I remember it being taught in college in the early 90s.

stuck elbow
hidden rain
#

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!

hidden rain
#

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

tulip sleet
hidden rain
#

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

tulip sleet
#

cat /etc/issue

hidden rain
#

Python 3.11.0b5

tulip sleet
#

we have not tested with 3.11

hidden rain
#

Ubuntu 22.04 LTS \n \l

#

DO I need to revert?

tulip sleet
#

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

hidden rain
#

Had trouble early on.. easier to move forward

tulip sleet
#

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

hidden rain
#

/usr/bin/python3

tulip sleet
#

I suggest you revert to the normal Ubuntu supplied Python packages.

hidden rain
#

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

tame creek
#

it depends on how you got it that wayโ€ฆ

tulip sleet
#

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?

hidden rain
#

that may have been why i went forward

#

yes

tulip sleet
#

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

hidden rain
#

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!

tulip sleet
#

good night, good luck!

manic glacierBOT
manic glacierBOT
onyx hinge
#

@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.

manic glacierBOT
manic glacierBOT
crimson ferry
#

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)

tulip sleet
crimson ferry
#

sure, need to distill down an example

manic glacierBOT
#

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) ...

manic glacierBOT
manic glacierBOT
lone sandalBOT
solar whale
#

@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.

manic glacierBOT
#

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.

manic glacierBOT
#

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

thorny jay
#

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.

manic glacierBOT
#

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: ...

tulip sleet
#

maybe you don't have to source install.sh, just run it

thorny jay
# tulip sleet Did you `source esp-idf/install.sh`? That should download the toolchiain. Then w...

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.

tulip sleet
#

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.

thorny jay
#

It is in the function def get_python_env_path() on line 980 ...

tulip sleet
#

also perhaps your version of esp-idf is not correct?

thorny jay
#

Oh it was fresh install and I never did ESP32 compile before.

#

I'll remove the .espressif and try again.

tulip sleet
#

so fresh clone, then do make fetch-submodules, then do the esp-idf things. Do you have an unusual hand-made python environment?

thorny jay
#

There is meme about python environment... I hope mine is not unusual.

tulip sleet
#

what is the base OS here?

thorny jay
#

Ubuntu 20.04.5 LTS x86_64

tulip sleet
#

should be ok

thorny jay
#

At least I was able to compile a QT-Py firmware, so that is already great archievement for me. ๐Ÿ™‚

tulip sleet
#

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

thorny jay
#

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.

tulip sleet
#

I should update that

spiral elk
#

and should mention -C3 as well

thorny jay
#

I removed circuitpython folder and .espressif folder, now trying again from scratch.

tulip sleet
thorny jay
#

Indeed I also saw that the URL was too specific.

tulip sleet
#

ok, I fixed the URL

thorny jay
#

I'll try again later. Thanks.

lone sandalBOT
manic glacierBOT
stuck elbow
#

@onyx hinge what is creatorid and why should it be unique?

onyx hinge
#

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

stuck elbow
#

I see

#

thanks

manic glacierBOT
spiral elk
#

@onyx hinge I'm actually gonna have to find my camera

thorny jay
# tulip sleet ok, I fixed the URL

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).

thorny jay
#

Ok, my problem is only with magtag, other random selected board seems to work fine.

jaunty juniper
#

what error do you get ?

#

is it that you didn't make mpy-cross ?

thorny jay
#

For magtag?

jaunty juniper
#

yep

#

haha I literaly missed that you posted it

jaunty juniper
#

I blame my cats for climbing on the keyboard

thorny jay
#

But it is totally a non issue. I don't plan to compile a custom firmware for the magtag.

jaunty juniper
#

ok ok

manic glacierBOT
thorny jay
manic glacierBOT
manic glacierBOT
#

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...
#

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...
#

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...

manic glacierBOT
#

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...

hidden rain
#

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?)

manic glacierBOT
manic glacierBOT
#

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...
neat patrol
#

Pico w

manic glacierBOT
manic glacierBOT
blissful pollen
manic glacierBOT
manic glacierBOT
manic glacierBOT
tame creek
#

are there nightly uploads of builds for 7.3.x?

jaunty juniper
#

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

tame creek
jaunty juniper
#

do you have the PR ?

tame creek
#

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)

manic glacierBOT
manic glacierBOT
crimson ferry
#

Are versions of CP older than what's on S3 available somewhere?

cedar veldt
#

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?

onyx hinge
#

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

cedar veldt
#

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

onyx hinge
#

I don't have any other ideas right now, shoot.

manic glacierBOT
#

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.

manic glacierBOT
manic glacierBOT
manic glacierBOT
#

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.

manic glacierBOT
#

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...
tulip sleet
crimson ferry
#

thanks, right there at the top, totally missed it

#

lol, of course, there's nothing older for the board I was looking at

manic glacierBOT
#
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...
#

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...

manic glacierBOT
#

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.
...

manic glacierBOT
#

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.

manic glacierBOT
#

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...
manic glacierBOT
#

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.

manic glacierBOT
#

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())

#...
tulip sleet
#

[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

lone axle
#

@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.

tulip sleet
#

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

lone axle
#

Thank you. I didn't even notice the title being template when filled it in ๐Ÿ˜…

tulip sleet
#

I often forget and edit the template. I will add something more obvious to the template that makes it clear it's the template

blissful pollen
idle owl
#

Done.

thorny jay
manic glacierBOT
proven garnet
#

@lone axle I updated the library update comment, every library did get updated - twice I believe ๐Ÿš€

cedar veldt
#

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 ๐Ÿ™‚

tulip sleet
idle owl
#

@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.

gilded cradle
#

It's automatic

idle owl
#

Hmm alright.

gilded cradle
#

I can take a look in a bit. It's likely something pretty quick.

tulip sleet
#

i don't see esp32 v2

idle owl
#

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

tulip sleet
#

this seems like it might be a typo or something

idle owl
#

Ah.

#

Well the "Quickstart" guide links to S3 bucket for downloads.

tulip sleet
#

considering the HUZZAH32 is there.

idle owl
#

We should probably fix it so we can link to /downloads like everything else.

#

Also, create a new install template, heh.

tulip sleet
#

after the meetings i can take a look and or @gilded cradle can

manic glacierBOT
idle owl
#

Keen. Either works for me.

#

Thanks @tulip sleet and @gilded cradle!