#circuitpython-dev

1 messages · Page 17 of 1

tulip sleet
#

I just diagnosed an off-by-one bug, where something started numbering at zero, but was expected to start at 1. Then I went to the kitchen to make lunch and started measuring four half-cups of water into the rice cooker, saying to myself "zero, one, two, three". Around "two" I realized what I was doing. 😆

manic glacierBOT
#

The testing is appreciated!

This is not intended to be a 100% replacement for the adafruit_led_animation.helper.PixelMap class. You've identified a number of things that are not implemented (pretty thoroughly actually!)

I chose not to implement everything as a way to keep the code size smaller. I'd prefer if only the part that benefits the most from speed is in C and as much as possible is in Python.

So, for instance, those class methods would just shift to being non-class function...

slender iron
#

👋

manic glacierBOT
#

danh and microdev1 noticed that this ignore pattern was over-broad and caused added sdkconfig files in boards/ (which should be committed) to be ignored and not proposed for addition by common tools like git status, git gui, etc.

This pattern anchors the search so that it only matches in the ports/espressif directory, so ports/espressif/sdkconfig is ignored but ports/espressif/boards/example/sdkconfig is not ignored anymore

This was noticed over in #7198 and also probably contributed to...

#
Ljinux raspberry_pi_pico_w 0.3.6-dev 01/01/2020 00:00:07 circuitpython Ljinux

[board@ljinux| ~]> modprobe driver_wifi as network
API: 12.2
Data: RaspberryPi.PicoW
Compiler: 1.29.4
ClmImport: 1.47.1
Customization: v5 22/06/24
Creation: 2022-06-24 06:55:08
[board@ljinux| ~]> iwctl --passphrase "[REDACTED]" station wifi connect Pi400
[board@ljinux| ~]> ping feline.gr
PING feline.gr (95.216.7.161) data.
ping: send 95.216.7.161
ping: recv 95.216.7.161 81 ms
PING from feline.gr:...
onyx hinge
#

<@&356864093652516868> We'll have our weekly meeting in about 90 minutes from now in this text channel and in the circuitpython voice channel. Please take the time to add your notes in advance to the document: https://docs.google.com/document/d/1_pM6rZNwdHXKLP69lmqDRBxVVnlMj-TsIRuRjjSCyEU/edit?usp=sharing -- I look forward to everyone's updates!

lone sandalBOT
manic glacierBOT
thorny jay
slender iron
#

yup! today is my first day back. just starting to get through everything

blissful pollen
#

Just select-all/delete for your inbox and it will make things easier

thorny jay
slender iron
#

I make pretty good use of filters to prioritize things

#

so I'll mostly skim and mark as read stuff

manic glacierBOT
#

Fixes #7040.

  • stm_peripherals_timer_get_source_freq() was off by one in its TIMx numbering assumption, causing incorrect lookups of some timer frequencies.
  • In PulseIn.c, timer clock reset was being done with an integer instead of a bitmask. Noticed this while looking for other manifestations of the previous bug.
  • Added some logic to stm_peripherals_timer_get_source_freq() to handle other variants of STM chips. Not tested, but would have been wrong otherwise.
  • Reworked timer a...
manic glacierBOT
orchid basinBOT
onyx hinge
#

I'm seeing weirdness only on the prototype 'scorpio' board with usb .. sometimes tio will log that it is disconnected but almost immediately reconnected:

93.2fps
93.8fps

[tio 12:46:08] Disconnected
[tio 12:46:09] Connected
93.8fps
93.7fps

kernel logs:

[1630122.269598] cdc_acm 3-2.4.3:1.0: ttyACM1: USB ACM device
[1630200.247678] usb 3-2.4.3: reset full-speed USB device number 110 using xhci_hcd
[1630200.509619] cdc_acm 3-2.4.3:1.0: ttyACM1: USB ACM device

the only thing interesting is that the circuitpython code is making heavy use of background pio writes. It looks like only usb-cdc is affected by this, not the CIRCUITPY mass storage device which is also weird. Compared to my usual setup I also have a USB hub in the mix so it could be related to that. Right now, just scratching my head over it...

slender iron
#

I'd probably use a beagle to sniff the traces

onyx hinge
#

yeah, I don't have one 😕 I can do a software-only trace with wireshark but that may not be super useful

#

and of course when I start looking for it, it stops triggering

slender iron
#

🙂

#

usb is complicated

onyx hinge
#

for a while I felt like it was 'worse' with higher LED current, like it was a supply droop or ground bounce or something, but just now I cranked the brightness up and that didn't make it happen more. The LED power supply is separate from a 5v/2a dedicated supply, not from the scorpio. still not enough to drive 240 neopixels at full white!

turbid radish
#

😂

lone axle
#

At Arduino we like to experiment with new technologies to figure out if we can use them to improve the tools we make for our users. We’ve recently been experimenting with the Python language as a possible extension for our programming platforms, considering how it has become the number one language for many types of […]

slender iron
lone axle
slender iron
#

I believe ntoll is doing the pyscript work for anaconda

turbid radish
#

CO2 Meter

thorny jay
#

What about Mastodon posting...

turbid radish
#

We had our first Mastodon article this week

#

Yes, email the link to Mastodon please

idle owl
#

We're working on getting a CircuitPython user up and running. Once it's solid, you can tag that user as well. Email is best though, especially for now.

hoary moat
#

Slightly harder to find folks on Mastodon.

turbid radish
#

We'll continually look to adjust to the social media environment

tulip sleet
#

mastodon enecourages hashtags and the latest version allows following hashtags: use #circuitpython as appropriate

minor plume
#

I’m on Mastodon too (@tammymakesthings@techhub.social) but I never really got the hang of Twitter so I’m still figuring out how to use it. But feel free to connect with me.

hoary moat
#

I just added my Mastodon to my discord profile (@mototimo@fosstodon.org)

turbid radish
#

👏

tulip sleet
#

i did the draft annotation by hand, but made an issue to automate it

slender iron
#

💯 blinka ❤️

hoary moat
#

we need a blinka with a heart emoji

idle owl
thorny jay
#

Wondering if we have ulab fast copy to pixelbuf, like we have fast copy to displayio bitmap. ("pixelbuf" I hope the right name for the source of Neopixel colour).

#

@errant grail not sure you can change the palette "LIVE" you have to re-apply for update of the screen.

errant grail
tulip sleet
turbid radish
#

Mostly unscathed - some minor house issues, lost utilities for 12 hours and broadband for a day

hoary moat
#

🔥

#

Needs more cowbell!

idle owl
blissful pollen
#

@onyx hinge (briefly got on now) Curious to see how you fixed the NeoPxl8. I didn't get very far beyond wanting to learning more about how the PIO part was working. If you have something to test let me know.

hoary moat
#

👶

solar whale
#

Will you be putting the bangle.js 2 into the CP repo? Look forward to trying it.

ember iris
#

👀 Oh it's got a heartrate monitor too, that's pretty neat

#

Not working yet is the fun part of open projects

hoary moat
#

+1 for pyocd for riscv

#

i think everyone is happy to hear @slender iron voice again

slender iron
#

I started it but didn't get too far

#

(not well documented)

hoary moat
slender iron
#

looks like I didn't push my changes but can

#

there is a slack pyocd with a channel for making it arch agnostic

#

(or arch plugin)

#

(the openocd forks drive a spike into my brain)

lone axle
#

I do think setting the property as opposed to calling show() makes it more clear that it's intended to be called once (or whenever you want to change the full display to a different entire group.) Lots of existing code will need updated ultimately if the show() method is removed, but could be worthwhile if it adds clarity.

thorny jay
#

Openembedded Workshop (Feb 6, 2023) <= Is that in Brussels like FOSDEM???

slender iron
#

Now is the time to mark show() deprecated and make root_group assignable

thorny jay
idle owl
#

Better idea, multiple people post them. 🙂

solar whale
#

@errant grail Thank you for the Pygamer-Thermal Camera upgrade-- it works great!

tulip sleet
#

@stuck elbow I couldn't find the issue, did you say you made it already?

errant grail
hoary moat
solar whale
thorny jay
#

Scorpio is calling.

thorny jay
#

So now I need two Scorpio, one to output to NeoPixel and one to read signal...

errant grail
manic glacierBOT
#

Pretty much all the Display.show() does is setting the root group for the display. However, some users are confused about how this works, and call in a loop on every refresh, or expect it to do something else. Now that we have the Display.root_group property, we could replace that method with just a direct assignment to that property. Hopefully, it would make it a little bit clearer how it works.

This would be an API change, so it would require changes in the documentation, example cod...

idle owl
#

Need to head out. Later, folks!

manic glacierBOT
thorny jay
hoary moat
thorny jay
#

@hoary moat I am from Belgium... I have been to most FOSDEM...

ember iris
#

Cheers all!

stuck elbow
#

(at least I never realized, I'm bad with people)

thorny jay
stuck elbow
#

and in a place that has good beer too

hoary moat
#

Not sure if I will be at FOSDEM in person or not just yet... isn't really a work excuse, but I might just go work remote for a couple weeks and enjoy Brussels.

manic glacierBOT
onyx hinge
#

@random junco did you create the notes document we used today? Do you know if you might have missed the step of check the box for “Share it with the same people”? I changed the document sharing mode so that it was "view only" but that also affected me. which isn't actually a problem that prevents me working, but it's not supposed to go like that. (it should have been directly shared with me as editor via 'share with the same people' but seems not to be)

random junco
onyx hinge
#

Thanks, sorry to bug you!

random junco
#

no need to apologize, I appreciate you letting me know, can't fix it if I don't know. 🙂

manic glacierBOT
#

@dglaude My understanding is the difference would look like this:

import board
import displayio

display = board.DISPLAY

# Setup the file as the bitmap data source
bitmap = displayio.OnDiskBitmap("/purple.bmp")

# Create a TileGrid to hold the bitmap
tile_grid = displayio.TileGrid(bitmap, pixel_shader=bitmap.pixel_shader)

# Create a Group to hold the TileGrid
group = displayio.Group()

# Add the TileGrid to the Group
group.append(tile_grid)

# Add the Group to the D...
#

Alternatively, you don't even need the group variable:

import board
import displayio

display = board.DISPLAY

# Setup the file as the bitmap data source
bitmap = displayio.OnDiskBitmap("/purple.bmp")

# Create a TileGrid to hold the bitmap
tile_grid = displayio.TileGrid(bitmap, pixel_shader=bitmap.pixel_shader)

# Create a Group to hold the TileGrid
display.root_group = displayio.Group()

# Add the TileGrid to the Group
display.root_group.append(tile_grid)

# L...
manic glacierBOT
lone axle
#

what would be the consequences of adding functions to shared-bindings/<module>/<something>.c without adding the matching definition inside of shared-bindings/<module>/<something>.h?

I would have assumed it would either not build, or not work properly if it did build. However I realized that I forgot to add anything to the .h and my new code does work surprisingly.

slender iron
#

.h is needed if another file uses it

#

to know the function signature

onyx hinge
#

If a function is global (definition looks like int f(int arg) { ... }) then it should even be an error if there's not a previous declaration like int f(int arg); or extern int f(int arg); the declaration SHOULD be in a .h file, though the check doesn't actually require it to be.

If it's a per-file function (one of the meanings of static in C), like static int f(int arg) or STATIC int f(int arg) then it is not usable from another file, even if you know the name, and so having a separate declaration in a header file would be nonsense.

manic glacierBOT
#

Looks like this field is not reset on deinit, so e.g. behaviour of PWMOut currently depends whether there was a DigitalInOut before.

https://github.com/adafruit/circuitpython/blob/8f414eb4ee4db6489c0f9eca1e441200ff3e852a/ports/raspberrypi/common-hal/microcontroller/Pin.c#L74

# Pi Pico with 220R between GP0 and GND
import board, digitalio, pwmio
p = pwmio.PWMOut(board.GP0, frequency=1000, duty_cycle=0xffff)
# 2.69V
p.deinit()
p = digitalio.DigitalInOut(board.GP0)
p.switch_to_o...
manic glacierBOT
tidal kiln
manic glacierBOT
#

Yes display.root_group = None will show the terminal.

It agree is a bit strange that setting to None has some effect other than "show nothing", but it's the same in the current API calling show(None) results in the terminal showing.

Perhaps there could be something like displayio.TERMINAL_GROUP or similar as a constant that is either an alias for None, or a new constant value that is used to indicate you want to show the terminal instead of other displayio objects, something li...

lone axle
tidal kiln
#

ah. so it's a lib feature? not a core firmware deal.

#

and default is disabled

lone axle
#

That is my understanding. I should've said "is optional" really. I don't have specific recollection of it ever happening by default, but perhaps it did before I started using that device as much.

tidal kiln
#

thanks. i think you're correct. looking at lib code.

#

confusing FAQ. should probably be more explicit about it being with the pyportal lib and with feature enabled.

manic glacierBOT
#

Perhaps there could be something like displayio.TERMINAL_GROUP or similar as a constant that is either an alias for None, or a new constant value that is used to indicate you want to show the terminal instead of other displayio objects, something like that would make the resulting code more readable and better describe what it does.

It could be the actual terminal group, since it is kept in memory anyways.

midnight ember
#

if we deprecate show() the amount of example code out there to be updated is mindblowing. all learn guides, examples, etc.. that's a major major change. i do agree with it because deshipu is right. getting a handle on what show() does is confusing for beginners and almost counter-intuitive nomenclature. once you know what something does the name actually becomes kind of irrelevant though, it just becomes the trigger to do something you need. so the inverse argument to keep it would be that if new users are being confused by it then that's a failing of documentation and learn guides.

tulip sleet
midnight ember
#

it will also break all display driven code prior to 8.0. that could be a good thing as it will force all code to be updated, like that might be a good thing in some respects. however it could also be a bad thing as it would make any display project non-backwards compatible. this is a big decision.

tulip sleet
#

it will not break it until 9.0.0

midnight ember
#

ah ok, plenty of time to get things ramped up and prepped for the change. good early early warning if it's going to happen. thank you for the clarification.

jaunty juniper
#

root_group was more of an "advanced" feature, I wonder if it should not be just root for simplicity

tulip sleet
#

we try very hard to have a release that includes the new way but still includes the (deprecated) old way. We don't do that only when it's unavoidable due to code space or something. @jaunty juniper -- could suggest that in the issue.

midnight ember
#

brings up another point about starting to introduce deprecation warnings into the core. it'll take up space but could be a lifesaver to someone working with old code that doesn't know any better.

tulip sleet
#

we don't want to print deprecation warnings, it clutters up output. There are deprecation warnings in readthedocs and the release notes

jaunty juniper
tulip sleet
#

also people not connected via serial don't see them anyway

midnight ember
#

yeah, CP needs to be too slim and trim and for that. np.

jaunty juniper
#

deprecation warnings break serial communication

tulip sleet
#

do you mean root and root_group are aliases of each other?

midnight ember
#

oof

jaunty juniper
#

like if you rely on exchanging serial data with your board and can't use usb_cdc.data (on ESP for example)

midnight ember
#

yeah i'm still on usb and serial, still haven't been able to update my network for wifi workflow 😦

slender iron
#

what do you need to update on your network?

midnight ember
#

firewall blocking mdns from traversing vlans

jaunty juniper
midnight ember
#

and i want to do that after i wire ethernet in the attic so it's a whole ordeal.

tulip sleet
#

right, same thing, can do both ways until CP9, so if we're making one change, we can do the other. Not sure if root or root_group is clearer -- we can discuss in the issue

slender iron
#

does web workflow use if you put in the ip?

jaunty juniper
#

on the question of warnings, I vaguely remember Micropython having a debug level setting, though I think that was for showing the ESP debug to the REPL

midnight ember
#

not sure i tried it twice and failed to get it working, will set aside some time to take another look

#

that was about 2 months ago i think

tulip sleet
#

still had to drill in the attic, which is very unpleasant place to work (joists and fiberglass insulation)

midnight ember
#

yeah i punchdown my own, i used to be an installer, that's not the problem. the problem is i'm now 280lbs and the attic in this house is about 3ft tall. :/

tulip sleet
#

ack, I understand

#

ours is taller but I still often wear a bike helmet when I'm up there

midnight ember
#

not a bad idea, never thought of that. attics in fl can get up to about 130F in peak summer. dying of heat stroke is a very real and biggest concern.

tulip sleet
#

yeah I only do that work in the winter or at night after it cools down

midnight ember
#

which is why i waited for fall/winter around here, the time is now and i'm still procrastinating. gained weight and for the first time in my life actually concerned about falling through the ceiling too.

tulip sleet
#

this is far off from -dev, sorry

midnight ember
#

np

manic glacierBOT
jaunty juniper
#

also, unrelated but it would be nice to clarify and stabilize the rules of the terminal group and related stuff, maybe have an API to access it, since there are regular demands to hide the blinka logo for example. Also change the font size.
We already added a way to disable the status bar, we could have an API for the logo and configuring the REPL. There also is supervisor.reset_terminal() which always leaves space for the status bar I believe so it might need changes.
Or maybe we could just make sure that the rules are clear (what is in root_group and in what order for example) and have a helper library for advanced uses (hide parts/resize REPL/change the content of the status bar/etc.) so as not to add more things in the core.

slender iron
#

the other way to go is expose the serial stream out of CP into the VM so the user can do anything they want with it

#

(including making their own Terminal instance)

jaunty juniper
#

there are demands for redirecting stdout to a file

slender iron
#

that's crossed my mind too when I hit bugs on the bangle.js 2

manic glacierBOT
manic glacierBOT
#

It's intentional, but I may be wrong.

On 32-bit arm micros, arithmetic on narrow types can actually be less efficient than arithmetic on wider types. Canonical example [https://godbolt.org/z/Kr41o9sMd]:

#include <stdint.h>

uint8_t add8(uint8_t a, uint8_t b) {
    return a+b;
}
uint32_t add32(uint32_t a, uint32_t b) {
    return a+b;
}

assembles to:

add8:
        adds    r0, r0, r1
        uxtb    r0, r0
        bx      lr
add32:
        adds    r0, r0, r1
...
manic glacierBOT
brazen hatch
#

This pr was meant to be a 5 minute thing just so that I can continue on the ap..
But here we are.

manic glacierBOT
midnight ember
#

either black or pylint caught a couple errors in my time function. that's pretty cool.

brazen hatch
#

I bet pylint
black is comfortable juggling ljinux code without fail

#

And I do plenty of sussy trickery

manic glacierBOT
manic glacierBOT
manic glacierBOT
manic glacierBOT
manic glacierBOT
#

I don't think it has to do with escape codes. After pasting "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" to my terminal program, ctrl-c doesn't work either. I suspect an internal serial buffer fills and that prevents ctrl-c from being received..

onyx hinge
#

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/1bxU_XogCgdpbxVPRA01tDc_tqLY0VFVUkpX6JQzwtd8/edit?usp=sharing

manic glacierBOT
#

@hathach can you comment here? We are using tud_cdc_set_wanted_char(CHAR_CTRL_C); and depending that we'll see a call from tud_cdc_rx_wanted_cb. However, when a lot of characters have gone un-read, the wanted CB is no longer called. Is this a TinyUSB bug or do we need to change what we do in CircuitPython (for instance, to do something to drain the un-read characters even if the Python code isn't reading anything)?

slender iron
#

want to do 8.0 triage tomorrow before meetings?

slender iron
#

time for me to up my github email filtering game

manic glacierBOT
#

Thanks. I am still not 100% confident about the way ping_time is used across two source files (Radio.c and ping.c), whether they need to be the same or whether they need to be different; but your logs seem to show that it "works now".

A note for the future: Because I don't know a single thing about your "ljinux" environment -- and the majority of reviewers won't either -- it is more difficult for me to analyze and understand what I am seeing, compared to just seeing Python code. If in th...

slender iron
#

@onyx hinge do we have an issue for pico w web workflow?

slender iron
#

kk, will add one

onyx hinge
#

or if we do it's not marked rp2

slender iron
#

I'm looking in web workflow and don't see it there either

manic glacierBOT
manic glacierBOT
#

It's hard to troubleshoot because it takes at least 2 days to reproduce. I switched from a label to a bitmap_label and so far it hasn't happened but unfortunately I have to switch back to label because the bitmap_label has too much flicker upon updates.

Performing a supervisor.reload() every night at midnight prevents the problem.

I have 4 QT PY ESP32-S2's and 4 of these SSD1322 displays. Any troubleshoot suggestions to narrow down the cause?

vague thicket
#

I recently add board to CPY.org and I would like to ask, if download for stable & beta version of CPY should show up right away or I have to wait until some new release? I saw that there was some bug with building files, but I do not know if that is related. Also I added board to tinyUF2 repo, so do I have to "connect" it to my board at CPY.org or it will show up eventually by it self (like for example for magtag board)? Thanks for clarification 🙂

stuck elbow
slender iron
#

we may want to use :inherited-members: in autodoc for the portal classes

#

so docs for classes like MatrixPortal include stuff from PortalBase

vague thicket
jaunty juniper
#

also speaking of "crcibernetica-ideaboard", didn't we settle on underscores for board ids ?

manic glacierBOT
vague thicket
jaunty juniper
#

ok cool

manic glacierBOT
midnight ember
#

In my git repo for nvm.toml i'm not showing a pull request. can only view the pull request at adafruit/nvm.toml

midnight ember
#

changes show in my github desktop, file is there in my github folder on my pc. it's weird.

slender iron
#

in your own git copy, it'll usually just be a branch

slender iron
#

@jaunty juniper any chance you have an ai thinker c3 board handy?

#

I've got a fix for the pwm status led

jaunty juniper
#

yup

slender iron
#

I guess I'll need your board def though...

jaunty juniper
#

let me see what board it is and in what box

slender iron
midnight ember
#

reinstalled WSL and come to find out you don't need to setup the virtual machine in the bios or do any of the hardware vm stuff. it doesn't even use it.

manic glacierBOT
manic glacierBOT
manic glacierBOT
#

resolves: #7213

This change allows display.root_group to be set to a group to be shown on the display rather than calling display.show(my_group).

There is example code in the linked issue that illustrates the difference in API.

Currently this change is not breaking, the display.show() function still exists and works the same as current main.

This also introduces displayio.SERIAL_GROUP which returns the Group object that contains the blinka icon and serial output text scr...

manic glacierBOT
manic glacierBOT
#

This adds support for a prototype version of the Adafruit Feather ESP32-S3 Reverse TFT and Adafruit Feather ESP32-S2 Reverse TFT boards. At least one revision is anticipated before manufacture, so creating a draft PR.

Works (both):

  • CIrcuitPython starts
  • TFT
  • WIFI
  • neopixel
  • D13 LED
  • bme280 works with normal I2C pins: b = board.I2C()

Works (esp32-s2):

  • max17048 works with reversed I2C pins (known board bug) b = busio.I2C(board.D3, board.D4)

Broen (esp32-s3)...

jaunty juniper
manic glacierBOT
manic glacierBOT
manic glacierBOT
#

Fixes #7105.

On SAMD21, port_disable_tick() did not finish the job of disabling the _tick_event_channel.

Also added a check to avoid doing anything if _tick_event_channel was already disabled.

Before this change, editing a file and causing an autoreload would use up a bunch of event channels:
(this is from some temporary logging I added:

[code.py edited here]
Code stopped by auto-reload. Reloading soon.
>port_disable_tick, _tick_event_channel: 0
port_disable_tick, _ti...
manic glacierBOT
manic glacierBOT
thorny jay
# jaunty juniper let me see what board it is and in what box

In what box 😭... the story of my electronic hobby. I almost started a list of items currently lost.
Right now the box with StemmaQT sensor is lost, together with the QTPy S2.
I was thinking about form factor sorting: Feather size, Micro:bit size, QTPy size, I2C sensor without StemmaQT, Adabox full product (PyPortal, PyGamer, MagTag, ...).

manic glacierBOT
#

Open questions:

  • Does anything else need to be done for the display.root_group setter? It seems to work as-is but I've only added minimal code to make it work, perhaps there is something I overlooked that still needs done.

I think it's ok as-is. We may want to make None mean nothing is displayed rather than showing the CP terminal.

  • Open to discussion on the name of displayio.SERIAL_GROUP I proposed displayio.TERMINAL_GROUP in the issue initially, but accidentally c...
manic glacierBOT
orchid basinBOT
orchid basinBOT
slender iron
#

@onyx hinge I was thinking your elf loader class could make top level attributes available for global variables for a running program

onyx hinge
#

you mean like smooshing it together with something like the register library? that would be neat

slender iron
#

kinda except you could do it all dynamically

onyx hinge
#

for scalars, probably. but structures?

slender iron
#

I'm thinking __getattr__

onyx hinge
#

for instance, for the keyboard project I was thinking I wanted a ring buffer in the shared memory area, but that's got structure to it

#

also I'm not sure if I know the size of symbols or just their address

slender iron
#

right

#

looks at ctypes

#

I think elf has type info

onyx hinge
#

elf supports many debug sets such as dwarf that can have type info

#

I am frightened of parsing dwarf, I think it's complicated

slender iron
#

ya, I think thats fair

#

I was thinking we could do a similar //| trick in the file to generate a python stub

onyx hinge
#

elf is simple because simple loaders are good .. debuggers are never simple, but debug information size has been a very real problem for big C++ projects especially

onyx hinge
slender iron
#

so that'd be a special register style class that could do the final "link" to find the symbols address

onyx hinge
#

if we're providing a build system we can also do more of the 'extractive' stuff on the host computer with full pyelftools

#

those can parse out dwarf structure information for sure

slender iron
#

they'd need to be marked volatile then too though

#

true

#

(my stemma g0 boards are out for delivery)

onyx hinge
#

ooh

slender iron
#

I was thinking we could use SVD to create "driver" classes for peripherals too

onyx hinge
#

just checked and an elf SymbolTableEntry does have a size in bytes, but not even a type tag. you have to go to the dwarf or stabs debug info for that

#

but if there was another section which said "oh, the struct parser for ringbuf is "<HHH"" you're starting to get somewhere. i.e., you just started homebrewing your debug information

manic glacierBOT
#

I think we should build on #6902 and refine the APIs to be more generic. I've been thinking about coprocessor and memory APIs within a few contexts that this API can apply to:

  1. An FPGA world where peripherals are dynamic and a "raw" memory API is needed to write drivers for them.
  2. An FPGA world where you can instantiate as many CPU cores as you like. Probably RISC-V ones. Controlling them would likely be done through the debug spec.
  3. [A St...
slender iron
#

I have been kicking around the idea of Register classes that use a standard memory access API under the hood

onyx hinge
#

Darn the easier to support debugging info format is not available for riscv targets cc1: error: target system does not support the 'stabs' debug format

manic glacierBOT
slender iron
#

@onyx hinge @tulip sleet ready when you are

onyx hinge
#

Join us in "Amelia"!

tulip sleet
#

one minute; eating ice cream

manic glacierBOT
slender iron
#

CFG_TUD_CDC_RX_BUFSIZE

tulip sleet
manic glacierBOT
#

@tannewt @dhalbert and I discussed this and we feel that there's no way we can make ctrl-c work -- if we potentially throw away characters from the buffer, it will break things that rely on reliable buffers like file uploads in mu and thonny. But if we don't throw away characters, the "ctrl-c" method can't work, because the ctrl-c character never leaves the host computer.

We might be able to add an alternative out of band interrupt signal such as using DTR or BREAK, which would then have t...

slender iron
manic glacierBOT
viscid pine
#

mentions of fpga stuff from scott 👀

#

i'll be keeping an eye on that!

manic glacierBOT
slender iron
#

haha, no where near the top of my list

stuck elbow
#

so many toys, so little time

slender iron
#

just got my stemma g0 board

stuck elbow
#

what does it do?

slender iron
#

nothing atm. its an STM32G0 micro on a stemma qt board

#

thinking of having basic io expander and adc read examples

stuck elbow
#

x0 or x1?

slender iron
#

x0

stuck elbow
#

so basically samd21, but from stm?

slender iron
#

got on my radar for CP because the top end has 144k ram

#

the stemma qt one only has 8k though

stuck elbow
#

I like that they are going in the direction of minimal additional components

slender iron
#

ya, super nice! just a 3v reg and a single decoupling cap

stuck elbow
#

that's one cap less than the samd21

slender iron
#

and many fewer than rp2040

stuck elbow
#

got it working with half the recommended caps ;-)

slender iron
#

nice!

stuck elbow
#

it's still like, four

#

hmm, but no usb?

slender iron
#

the higher class does have usb

stuck elbow
#

I wonder if something like vusb would work...

slender iron
#

why do you need usb?

stuck elbow
#

circuitpython?

#

oh, even usb-pd

slender iron
#

I'm not thinking this would run circuitpython

#

it would be a coprocessor running native code

stuck elbow
slender iron
#

true. that'd be a different board with a x1 device

stuck elbow
#

makes sense

slender iron
#

(maybe a gemma and trinket would have the high ram version)

stuck elbow
#

so this is more like samd9 in the seesaw

slender iron
#

right

#

with a rom i2c bootloader

#

The STM32G0B0KE is a value line version with 144k ram and usb

#

32 pin lqfp

jaunty juniper
#

trinkeys with more ram for animations and HID and other stuff would be nice, though they need more flash too

slender iron
#

aiming for samd21 level performance with more ram

#

its 512k flash

jaunty juniper
#

ah that's good

slender iron
stuck elbow
#

ain't gonna be so cheap

slender iron
#

nope

#

or available

stuck elbow
#

right, the chips for missiles have priority

#

it's a bit weird introducing a new series of chips in the middle of a shortage

slender iron
#

its their first 90nm mcu afaik

#

(F0s are 180)

#

so you may be able to have the new stuff more available due to demand for a specific node

#

RP2040 is 40nm iirc

stuck elbow
#

and AVRs are like 5mm ;-)

#

it's funny how the oldest chips are in the greatest demand, because they are used by everyone, and they are actually harder to make with the old processes

slender iron
#

probably smaller wafers too

#

(I discovered asianometry's videos and they are very informative)

stuck elbow
#

nice, I will have to watch those

#

@slender iron have you looked into tinytapeout, speaking of chip production

slender iron
#

ya, I've followed it

#

kinda think I can help at the peripheral register design and soc definition level

#

whenever I find cycles

manic glacierBOT
#

I do think it sounds good to have it under _pixelmap and then having the accompanying python code be adafruit_pixelmap library with the helper functions that is meant for use by user code and other libraries.

If we do want to go that way, I can work this week on cookie cutting a library for it and migrating the existing code from led_animation and making the changes needed to work with new core module.

manic glacierBOT
#

Two potential issues I found:

  1. If I have a pixelmap and access outside of the bounds CP crashes
  2. If I try to get a slice e.g. pixelmap[0:20] I get TypeError: can't convert slice to int

As to the helper code, I'm not sure if a _pixelmap vs adafruit_pixelmap with helper functions is best. For my 300 grid array it alternates up/down so I had to write a quick function to create the indices in the correct order where the animation library does have some of that in it.

Also I have...

manic glacierBOT
midnight ember
#

requests library now has API examples for discord, github, mastodon, twitch, twitter, and youtube.

#

anyone want to make a request for a basic API example? I'm knocking them out of the park lately.

#

why aren't my PR updates showing up in the github dev channel feed?

manic glacierBOT
brazen hatch
#

hehe its morbin debuggin time

brazen hatch
#

yea this is easy
no need for printf spam

#

4 breakpoints are more than enough

manic glacierBOT
manic glacierBOT
tulip sleet
#

some repos have a webhook to post changes into the feed. The only organization-level webhook is for releases

midnight ember
#

oh it only shows up for comments on open issues? must have gotten that confused.

tulip sleet
midnight ember
#

here in the dev channel, was pretty sure stuff was showing up here :/

tulip sleet
#

only adafruit/circuitpython and adafruit/circuitpython-org show up in this channel

midnight ember
#

yeah i looked, must have been mistaken

tulip sleet
midnight ember
#

made a commit to the requests examples as Twitch and added a Mastodon example in there. thought i could do it as 2 separate PR's but it kinda merged them. didn't want it to be confusing to the reviewer.

tulip sleet
#

you can always add another post to the PR if you want to explain something

midnight ember
#

ah ok thought libraries were included, my mistake

tulip sleet
#

i added CircuitPythonLibrarians as a reviewer. There were no reviewers

midnight ember
#

is it possible to get a feed for library updates? i'd probably enjoy reading that feed to see what's happening with the libraries.

tulip sleet
#

some staff (like me) subscribe to everything in the organization, but that's a LOT of email

#

I get several hundred emails a day

midnight ember
#

oh i only look at it while in discord, didn't think of the emails. i don't check my email often either but when i do it's full of updates too yeah :/

#

yes, hopefully separae it into github-core-feed and github-lib-feed? maybe that will help?

#

i do enjoy rss feeds

stuck elbow
#

I wish I could somehow unsubscribe from all those gihub e-mails from adafruit repos, they make it really hard to find the few messages that are actually relevant to me

midnight ember
#

it is a lot

stuck elbow
#

makes me miss comments on my pull requests

tulip sleet
#

are you watching the entire organization? You can turn off notifications on repos you don't care about, or only get notifications on those you do, but it's more trouble to manage

#

i feel I have to review everything to know what's going on, but I too miss things sometimes

#

some email filtering and sorting rules could also be helpful

midnight ember
#

probably forgot that was a thing, i'm still kinda new to working with a group in github, will look into that option

#

it's kinda why i like the feeds, give a nice curated overview

tulip sleet
stuck elbow
tulip sleet
midnight ember
#

i think it's done when you submit something like a pr, like there will be a checkbox to subscribe to updates. since i get a lot of emails it's probably checked by default.

midnight ember
#

that's a good point, dunno 🤷‍♂️

stuck elbow
#

I think I'm getting all those e-mails because I'm in the librarian group?

tulip sleet
midnight ember
#

oof, that'll do it

tulip sleet
#

yes, you're in the librarian group so you can approve PR's. As a member, you can still control your notifications

midnight ember
#

yeah i have some set to watched in the top right of the github website on each repo page

manic glacierBOT
#

I have compiled this and loaded it into my device. The LCD and pins are working, have not tested the IMU yet. The one issue I found is not quite related to this pull request is that the VID an PID of the device are not recognized by VSCode's extension for CircuitPython, thus making it impossible to access the console, though, the console works in Mu Editor.

Digging further I cannot find the PID for this board on this page: https://github.com/raspberrypi/usb-pid
Also, according to this is...

midnight ember
#

it's because i "followed" adafruit main page

tulip sleet
#

are you getting emails for everything?

midnight ember
#

no oddly enough but it shows the watched status as following stuff that i'd never follow like cpython

tulip sleet
midnight ember
#

ohhh it only shows if participating or @ mentions by default that's why

tulip sleet
midnight ember
#

ugh i feel noobish

tulip sleet
#

it's very complicated!

#

there's no way you can know all this from the start

stuck elbow
#

I'm not following adafruit, and I can't see any options about notifications from organizations

tulip sleet
#

are you getting notifications about every repo (e.g. the Arduino ones too)?

midnight ember
stuck elbow
midnight ember
#

i have nothing to do with that repo but because i'm following adafruit it sets it up automatically and it's honestly a good setting, i'm ok with it now that i realize what it's doing.

tulip sleet
stuck elbow
#

no adafruit repos in that list

#

just my own which I want to watch

tulip sleet
midnight ember
#

how many repos does adafruit have lol, there's no way i'm going through manually setting ignore on the ones i'll never need. hundreds? thousands? lol

tulip sleet
stuck elbow
#

both are off for me

midnight ember
#

oof

stuck elbow
#

I think I'm getting subscribed to all the issues because they automatically assign CircuitPythonLibrarians as a reviewer

tulip sleet
# stuck elbow both are off for me

I would say just check the notification settings in your personal settings, and also what your team member settings are. And pick a repo you are getting unnecessary notifications on and see if you are set to watch it (might have happened automatically).

stuck elbow
#

that's what the log suggests

midnight ember
#

think i just need to be more diligent in unsubscribing from stuff after i've contributed what i need to as a beta tester, get in and get out. https://github.com/notifications

tulip sleet
midnight ember
#

thank you for all the explanations dan it was helpful and reassuring.

stuck elbow
tulip sleet
stuck elbow
tulip sleet
#

sure - np - let us know. @idle owl tagging you for interest ^^

stuck elbow
#

I think it's just how github is not really made for hundreds of repositories

tulip sleet
#

we are a pretty flat organization

#

not sure who else has this many repos

proven garnet
#

There's a talk from GitHub Universe about managing CI across repos and orgs, and I'm wondering how having as many repos as we do will have an impact on what they talk about.

#

And thanks for reminding me to watch it zoop

#

"In this session, Joe Duffy will show you how to standardize the process for deploying GitHub Actions across hundreds or even thousands of repositories, with built-in security, automation, and consistency, thanks to infrastructure-as-code."

tulip sleet
#

sounds like it's right up our alley 🙂

manic glacierBOT
#

tested:

  • board.LED
  • neopixel as status LED
  • i2c scan finds lis3dh sensor

not tested:

  • rgb matrix o_O
  • the gpio pins

not final:

  • module type (sample is XX0H32, no-psram version)

Introduce new board properties for matrixportal-style boards:

  • MTX_COMMON
  • MTX_ADDRESS

These are intended to simplify use of the RGBMatrix constructor:

matrix = RGBMatrix(..., addr_pins=MTX_ADDRESS[:3], **MTX_COMMON)

removing the need for sending in the following...

tidal kiln
tulip sleet
#

someone could do a stock check on these, or you could order one

#

is there one board that still works fine?

tidal kiln
#

yes. this one has been going on for some time.

tulip sleet
tidal kiln
#

indeed. and this is 3rd attempt.

#

stock was checked btw. before sending 2nd.

tulip sleet
#

if the boards are being tested at a lower clock freq, but CPy is using a higher one, maybe that would explain it. If stock check was done with an Arduino test program

manic glacierBOT
#

CircuitPython version

Adafruit CircuitPython 8.0.0-beta.4-28-ga036c9c38a-dirty on 2022-11-17; Adafruit MatrixPortal ESP32S2 with ESP32S2

Code/REPL

matrix = RGBMatrix(bit_depth=4, width=32, addr_pins=MTX_ADDRESS[:3], **MTX_COMMON)
display = framebufferio.FramebufferDisplay(matrix)

Behavior

Assertion 'height_in_tiles > 1' failed, at file display.c:131

[tio 10:18:23] Disconnected
[tio 10:18:26] Connected
Auto-reload is off.
Running in safe mo...

tulip sleet
#

works on mine

manic glacierBOT
tidal kiln
#

good idea. was just thinking same.

tulip sleet
#

maybe good to mention that we test everything in stock after production, and the replacement got an extra test beforehand

proven garnet
#

Is there a reason that info_uf2.txt for all RP2040 boards is RPI-RP2? Is it an implementation limitation?

manic glacierBOT
#

I cannot get the ap to stop no matter what I do..
This is due to cyw43_wifi_leave being borked and doing nothing.

Looking at the respective micropython code we can see, they haven't implemented it either.

I will continue implementing the AP, without stop_ap.
stop_ap will simply raise an appropriate error. Feel free to suggest error messages.
What I propose is `NotImplementedError: AP cannot be ...

tulip sleet
#

the bootloader is not flashed; it's manufactured in

proven garnet
#

Ah gotchya. Thanks!

manic glacierBOT
slender iron
#

@tidal kiln ya. I just wanted to check that it wasn't a firmware issue. it sounds similar to the tufty 2040 issue too

#

but it really seems like it is something on their end considering its happened three times

#

may also be worth checking revision of the board

#

possible our older versions work ok but something changed with the newer ones

#

running the arduino test is a good idea

manic glacierBOT
#

What happens if start_ap() is called a second time, with different parameters such as ssid or password?

Stays on original ssid and accepts no connections.
This applies for same ssid, different passwd
different ssid, same passwd
different ssid, different passwd

Do we have any API to access cyw43_deinit() to shut it all down and start over (short of a CircuitPython reload)?

Aren't some pins controlled from the wifi chip?
It would be pretty problematic resetting.
Pretty...

slender iron
#

@onyx hinge does the MP LWIP code allocate on the MP heap internally?

onyx hinge
#

@slender iron I have to admit I don't know.

slender iron
#

(be back after lunch)

onyx hinge
#

#define MEM_LIBC_MALLOC 0

manic glacierBOT
onyx hinge
#

#define MEM_SIZE 4000

#

is it just using a fixed 4000 byte area for lwip?

manic glacierBOT
lone sandalBOT
thorny jay
#

Hi @idle owl I am playing with ESP32 board and I find that learn guides are not great at telling how to install CP on it. The definitive guide is this: https://learn.adafruit.com/circuitpython-with-esp32-quick-start/web-serial-esptool but board specific pages do not link there, sometime do not even mention CircuitPython is possible, at best they link to installing CircuitPython guide that talk about UF2 and RP2040. I made a few comment on some learn guide, but the "problem" is a bit general it seems, maybe because of the templating system too.
I think those three board and associated product page are the most important target: https://circuitpython.org/downloads?manufacturers=Adafruit&mcufamilies=esp32

thorny jay
jaunty juniper
# thorny jay Yeah, that's what I said. 🙂

yeah sorry I misread your link 😉
I believe board guides and product pages do not talk about Circuitpython on ESP32 yet because it's in beta and they don't want to push it yet

jaunty juniper
#

but yeah the info is missing from cp.org

idle owl
idle owl
jaunty juniper
#

wasn't there talk about where to reference the ESP32 page in the welcome to circuitpython guide ? (which is the "get started" link on cp.org)

manic glacierBOT
slender iron
manic glacierBOT
#

TBH, I'm not sure there is significant value top stop the AP during a running program. Changing the AP SSID/password, then restarting the code worked fine when I previously tested. I think there are things that just requires the radio to be hard power cycled. For example, once the AP is started the channel assignment will not change without a hard power cycle.

I looked at the error messages. "cannot be stopped" has the connotation that something is preventing it from stopping. IMO, "...

brazen hatch
#

I'm out. Good night everyone.

slender iron
#

night!

manic glacierBOT
#

In the code for setting PWM duty cycle in the native PWMOut implementation for the RP2040
(https://github.com/adafruit/circuitpython/blob/main/ports/raspberrypi/common-hal/pwmio/PWMOut.c)
I found this:

// Wait for wrap so that we know our new cc value has been applied. Clear
// the internal interrupt and then wait for it to be set. Worst case, we
// wait a full cycle.
pwm_hw->intr = 1 <slice;
while ((pwm_hw->en & (1 <slice)) != 0 &&
` (pw...

manic glacierBOT
manic glacierBOT
midnight ember
#

Instead of attempting to add a new chip (S25FL128L 16MB SPI flash) that doesn't have an existing definition in nvm.toml I've decided to go with the W25Q128JVSSIQ https://www.adafruit.com/product/5634 for the custom bluefruit sense build.

#

At the time I started the project the Adafruit approved chip was unavailable (chip shortage)... which is why I had to try to build my own. Now I can just drop in that chip and test from a breakout board first with bodge wire too. This seems like a smarter way to go now.

midnight ember
#

@onyx hinge need a PID approval for the UF2 before I can continue with my custom 16MB bluefruit sense modification.

slender iron
#

@analog bridge I’d love to hear your thoughts about the coprocessor issue I wrote up

analog bridge
slender iron
#

Thanks! I’m headed to bed now but will reply tomorrow

analog bridge
#

Should our build directory be build/board instead of build-board?

#

i.e. move board builds to a sub-directory of build at the root of the port

manic glacierBOT
manic glacierBOT
#

Thanks for the suggestion (I noticed you've worked on audio for CircuitPython a bit, so I thought you might have something to add!), but I'm not trying to do MIDI stuff, and it looks like synthio currently can only do a square wave. I'm looking for something more full featured, where I can basically programmatically craft custom waveforms in real-time. Or rather, I can programmatically craft waveforms already. I just need an API that allows me to play them in real-time, as they are bei...

orchid basinBOT
manic glacierBOT
manic glacierBOT
manic glacierBOT
#

Scott, @.***

Welcome Back!
Congrats and hope your child is healthy and well.

I know there is a balance between usability and functionality and Adafruiit
and the Cpy Group truly wants usability for novice users, etc.
I too find the usability factor the main reason to use CPy and not straight
C/C++ code.

Native CPy can read the ADC without the DMA. On the RP2040 the fastest time
(that I was able to achieve)
was about 20 microseconds.

My motivation to develop analogbufio was for a seri...

analog bridge
#

@tulip sleet is tools directory fine to place show_board_error.mk?

slender iron
#

it could go in a py/circuitpy_*.mk

tulip sleet
#

or py/?

#

right now the check at the top of the Makefiles, but I don't think it has to be

manic glacierBOT
#

Starting a couple of years ago, git added the concept of partial clones. This adds the --filter option to various commands, git clone , git submodule update, and maybe more. The partiality can be to fetch only the "blobs" (file contents) needed for a particular checkout, or to fetch only the part of a tree.

Rather than repeat some good explanations here, take a look at these writeups:
https://github.blog/2020-12-21-get-up-to-speed-with-partial-clone-and-shallow-clone/
https://abou...

analog bridge
#

I am concerned about something down the line using BOARD parameter in circuitpy_*.mk

#

so py/show_board_error.mk?

tulip sleet
#

i don't know what you mean by "down theline"

#

if it is at the top of the circuitpy_something.mk file, is that safe enough?

analog bridge
tulip sleet
#

it depends on where that gets included

#

I see, $(BOARD) is used before circuitpy_mpconfig and circuitpy_defns are included

manic glacierBOT
tulip sleet
#

But I think if you move the check down to the top of circuitpy_mpconfig.mk, it will still do the check, just a little later. From ports/atmel-samd/Makefile:

#
# Select the board to build for.
ifeq ($(BOARD),)
  $(error You must provide a BOARD parameter)
else
  ifeq ($(wildcard boards/$(BOARD)/.),)
    $(error Invalid BOARD specified)
  endif
endif

# If the build directory is not given, make it reflect the board name.
BUILD ?= build-$(BOARD)

include ../../py/mkenv.mk
# Board-specific
include boards/$(BOARD)/mpconfigboard.mk
# Port-specific
include mpconfigport.mk
# CircuitPython-specific
include $(TOP)/py/circuitpy_mpconfig.mk

# qstr definitions (must come before including py.mk)
QSTR_DEFS = qstrdefsport.h

# include py core make definitions
include $(TOP)/py/py.mk

include $(TOP)/supervisor/supervisor.mk

# Include make rules and variables common across CircuitPython builds.
include $(TOP)/py/circuitpy_defns.mk
#

just a little later. It will fail early enough, I think?

analog bridge
#

py/mkenv.mk stands out as a good option, it is guaranteed to be at the top as it defines $(TOP)

tulip sleet
analog bridge
#

py/mkenv is ruled out as mpy-cross.mk uses it and its routine dosen't require a BOARD parameter, I suppose

tulip sleet
#

circuitpy_mpconfig.mk is only used in ports/*/Makefile (besides something reading it for making the support matrix)

analog bridge
tulip sleet
analog bridge
#

I mean new file in py/

tulip sleet
#

that sounds good, more stuff could be in there later that is make-related, not port, board or feature-releated

#

good idea!

manic glacierBOT
#

As I re-test today I'm getting different results. Of course, I'm also using different boards and different builds of CircuitPython. Notably, these boards are non-PSRAM boards, but at least they're in the feather form factor and have the LED on GPIO13. The build is 8.0.0-beta.4-25-g195ad4e479 which is the same as b8a2d3ffdcbd396a6f551a15abfc8ca7705e8d2e except for the addition of these boards.

Here's a full example with all necessary files:
[coproc-example.zip](https://github.com/adafrui...

orchid basinBOT
manic glacierBOT
#

Know what would be really cool though? Something similar to audiocore.RawSample, but with a FIFO instead of a static array. If the FIFO had some way of easily checking how many additional samples it has room for, it would be really easy to include a function as part of the program loop that checks the FIFO and generates enough to refill it each loop, before it runs out. Even a 50 to 100 millisecond FIFO buffer would probably be plenty. (Maybe this should be a feature request specifically ...

onyx hinge
#

@slender iron can EXTERNAL_FLASH_DEVICES list devices of different capacities and it will work correctly (select the actual capacity at runtime)? I think existing examples are all same-capacity. EXTERNAL_FLASH_DEVICES = "GD25Q16C, W25Q128JVxQ" and so I bet this was never tested. Thinking about @midnight ember's 16MB modified bluefruit sense https://github.com/pidcodes/pidcodes.github.com/pull/787 -- seems like it SHOULD work though

GitHub

Adafruit requires custom PID/VID for UF2 builds. Need PID for a 16MB flash version of the bluefruit sense.

#

flash_device->total_size seems to be used consistently

midnight ember
#

i had the same thought but since it's build just for me i removed the lower capacity and added the bigger one

#

EXTERNAL_FLASH_DEVICES = "W25Q128JVxQ"

#

should i leave the lower capacity in there to test that out? can do it if it'll help beta test that np.

slender iron
#

I'm not sure on what ports it would work correctly

#

@midnight ember are you actually making it as a product or are you just hacking one?

midnight ember
#

mod/hack

slender iron
#

I wouldn't bother getting a pid or committing the board def into cp

#

I know we have a couple haxpress builds but I doubt they are used at all

midnight ember
#

oh, right duh. guess i felt bad trying to use adafruits vid without permission 😞

#

was following the guide to the letter... too much.

jaunty juniper
#

like the QT PY M0 haxpress ? There are a few in nature (including mine)

manic glacierBOT
slender iron
#

qt py m0 is a bit different since the flash spot is unpopulated

#

the nrf sense would require removing the existing flash

midnight ember
#

yes

#

uson to soic8 adapter boards for the bluefruit sense

ornate breach
# midnight ember

Not gonna lie, these little PCBs look like skeleton hands with two fingers up

jaunty juniper
#

one of those things they have in stadiums

midnight ember
#

Actually it’s cartman

jaunty juniper
#

foam hands or whatever it's called

idle owl
#

Stupidly, they're usually referred to as "foam fingers" when they almost always include a whole hand.

midnight ember
#

yeah does kinda look like that, just a coincidence of the footprint required for the mod

#

because the headers are in the way so it has to go past the headers

#

and because i usually use stacking headers they're pretty tall, once installed it's not coming out

manic glacierBOT
#

analogbufio is new in 8.0.0. I suggest we make a few tweaks to the API before we stablize 8.0.0.

  • [ ] Rename BufferedIn.read to readinto.
  • [ ] Provide the buffer to readinto rather than the constructor. The constructor would reserve resources needed besides the output buffer.
  • [ ] Have readinto return the number of samples read in case an error causes fewer samples to be captured.
#

Looking back at the analogbufio code I see that the dma_channel_configure call IS in fact in the read (sigh). I suppose it could have been placed in the constructor (with the start_immediately flag set to False).

I think the constructor should reserve any resources it needs (like the pin and a DMA channel.) Then read (which I'd rename to readinto) would setup and trigger the dma to read into the buffer. The constructor could still do most of the DMA setup, just not the actual buffer set...

amber sundial
slender iron
#

the BLE stuff is done for nrf basically

#

and I've just started bringing the web workflow to pico w

amber sundial
#

oh that's excellent news!

#

great stuff

onyx hinge
#

Is CDC 0 always repl? Or if repl is disabled, is the non-repl CDC index 0? Asking because I wonder about this ... ``` // Console will always be itf 0.
tud_cdc_set_wanted_char(CHAR_CTRL_C);

#

@tulip sleet maybe you happen to know/remember?

slender iron
amber sundial
slender iron
tulip sleet
#

so maybe you have to make that a global, or add an accessor function or a helper function or something

onyx hinge
#

OK but if it's enabled it'll be idx 0, so the existing code is irght

tulip sleet
#

yes

digital shoreBOT
#
adafruit
Owner

adafruit#3230

Category Channels

8

Text Channels

61

Voice Channels

7

Members

35943

Roles

36

manic glacierBOT
#

I may be flashing it wrong this time around, tried a few ways, but I get a boot loop:

ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0xc (RTC_SW_CPU_RST),boot:0x18 (SPI_FAST_FLASH_BOOT)
Saved PC:0x421099f2
SPIWP:0xee
Octal Flash Mode Enabled
For OPI Flash, Use Default Flash Boot Mode
mode:SLOW_RD, clock div:2
load:0x3fce3808,len:0x68
load:0x403c9700,len:0x980
load:0x403cc700,len:0x25a0
entry 0x403c98a4

onyx hinge
#

huh, tinyusb reports that the duration of the break signal is 65535ms. luckily you can send more characters before a minute is up. Unfortunately, the "break" signal is not sent if the software buffer is full, so this doesn't help.

#

or at least tio doesn't succeed at sending it, it could be a tio limitation

tulip sleet
#

that seems like a bug?

onyx hinge
#

yeah it is a tio bug/limitation

#

you also can't quit tio in that state

tulip sleet
#

is it an open issue on tio?

onyx hinge
#

no

#

I'll write something up

#

I should also check with current tio, I use debian's which is old

#

same

manic glacierBOT
#

When the USB serial buffer is full, the Ctrl-C code to send KeyboardInterrupt can't be sent, which creates a problem if you've pasted code or otherwise filled the buffer and need to recover. A similar problem affects advanced UIs that interact with CircuitPython and may send characters when they're unexpected, such as mu when it tries to move the cursor based on the user clicking on the screen.

The main way forward seems to be to use some kind of message that can still reach CircuitPython ...

idle owl
#

@thorny jay I added the CircuitPython install page to the ESP32 Feather V2 guide. Do we have other ESP32 boards that support CircuitPython that don't have install instructions? Or is that the one you were referring to?

thorny jay
#

I posted the search page, let me try again.

idle owl
#

Ok thank you

idle owl
#

Ah ha. Ok.

thorny jay
#

Those need love, maybe you've done 1/3.

idle owl
#

Hadn't thought to go that route to find them. Thank you.

#

Yes, one out of three have CP install instructions.

thorny jay
idle owl
#

Mmm.... I think we have a separate template for ESP32S2. I'll add it to the list for Eva though.

thorny jay
#

Because it has no native Serial.

idle owl
#

Oh right.

#

Hmm.

#

Good call.

thorny jay
#

S2 is OK, you can do UF2.

idle owl
#

Maybe that template would work. Do you have to use the Web Serial installer to get CP onto the C3?

#

or esptool

#

We only explain Web Serial on this though.

thorny jay
#

My only C3 is not supported, but I used the Web Serial...

idle owl
#

Fair enough

thorny jay
#

My Windows PC is not up to date on ESPtool.

#

How, Adafruit has a great Web Serial page by Melissa, but some guide send to an external page.

idle owl
#

This is basically the same thing, but templated to be for a specific board in the board's guide.

thorny jay
#

I found one thing, then an other, if you start pulling the rope there might be other. 🙂

idle owl
#

I know that feeling 🙂

#

Thank you for the help.

thorny jay
#

Your welcome.

manic glacierBOT
#

I'll see if I can take a look at the audiocore code. I don't think I have enough knowledge of the RP2040, let alone all of the other microcontrollers that might be able to support this, to code it myself. I do know that the RP2040 has some kind of DMA thing that can be used to drive a PWM at a specified sample rate. If 'audiocore` is already using that, I might be able to work out how to set that up with a FIFO for the RP2040. I don't have a ton of free time right now though, so I don't...

tulip sleet
idle owl
#

Hmm ok

tulip sleet
#

The non-UF2 apge was very bossac orinted

idle owl
#

We have this information spread out something fierce.

tulip sleet
#

just added better pointers and text to STM and Esprssif

idle owl
#

Ahh ok

tulip sleet
#

also on the UF2 page, made clearer some boards can't use UF2

#

i did this only a couple of hours ago

idle owl
#

Ok

tulip sleet
#

based on a forum thing

idle owl
#

Fair enough

slender iron
#

@onyx hinge I know the tio dev had stopped by here and offered to help

slender iron
#

@onyx hinge what runs lwip? is it done on cp function call?

onyx hinge
#

code in the sdk

slender iron
#

I'm having exec_user_callback queue up the web workflow background task but I'm not sure if the outer lwip code will be run

#

maybe it'll just work

onyx hinge
#

This is one of those "I may be wrong, because it just worked and I didn't pay much attention to it". There is in socket.c static inline void poll_sockets(void) { but I think it actually happens from an interrupt which is in the sdk

slender iron
#

👍

#

I think I've got it in the right place

onyx hinge
#

src/rp2_common/pico_cyw43_arch/cyw43_arch_threadsafe_background.c

slender iron
#

my curl call failed immediately now instead of hanging 🙂

#

how do I enable the debug_printf?

onyx hinge
#

I think what I used was ```diff
-#if 0 // print debugging info
-#define DEBUG_printf DEBUG_printf
+#if 1 // print debugging info
+#define DEBUG_printf(...) mp_printf(&mp_plat_print, VA_ARGS)

slender iron
#

👍

onyx hinge
#

there are also a bunch of DEBUG macros in lwipopts.h but I'm not sure where their output goes

slender iron
#

kk, I'm making progress so far

onyx hinge
#

it calls printf

#

just regular printf

slender iron
#

pico-sdk probably handles that

manic glacierBOT
#

I did some testing with an ADXL343. I discovered a minor problem in the mode 3 setup on the RP2040 (the clock starts out low), but I have a fix for that and will be PR'ing it.

On the ESP32-S2, I don't have a good analog of your example. I am getting data from the ADXL343 which looks OK, including having bytes with the LSB = 1, but it is not the last byte that is read (which happens to be zero).

There are various Espressif bug reports about mode 3. The most notable one is https://github....

slender iron
#

no mdns but everything else looks ok

#

well, websocket input isn't working...

#

and now it does

jaunty juniper
#

I'd need to go back and test it properly, maybe with python tools, but I have had weird issues with mdns with the app I wrote. I does mdns requests for circuitpython.local and I have been having 2 issues:

  • when using a different port than default, the port isn't always reported in the mdns responses, resulting in an inaccessible board, but it's intermittent
  • mdns names reported by the boards gain a suffix number that keeps increasing, I believe it might be the board thinking there is a name collision, but there isn't
slender iron
#

I saw an issue for the second one and intend on looking at it

jaunty juniper
#

ah yes anecdata opened an issue for that I forgot

slender iron
#

the first bullet sounds like an idf issue

#

I'll get my brain in mdns mode next week

#

though there are two small things to fix in this change first

#

and next week is a short week

manic glacierBOT
#

The latest commits make a few changes including

  • changing the name of the constant to displayio.CIRCUITPYTHON_TERMINAL and make it return the terminal group that is already in memory.
  • Change the internal API calls to use set_root_group instead of show all the way down into display_core (made this internal change for 3 types of displays: displayio.Display, displayio.EPaperDisplay, frambufferio.FrameBufferDisplay)
  • Added the set root group property to EPaperDisplay (tested successfu...
manic glacierBOT
#

While testing for #6510, I found a different problem on RP2040. The hw peripheral does not start with SCK high when polarity set to high. This is discussed here:

https://github.com/raspberrypi/pico-sdk/issues/868
https://forums.raspberrypi.com/viewtopic.php?t=336142

Add a workaround, which can be removed when pico-sdk is fixed (scheduled for 1.5.0).

Tested on a Feather RP2040 with a mode 3 sensor, ADXL343.

manic glacierBOT
manic glacierBOT
manic glacierBOT
#

Still boot looping:

ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0xc (RTC_SW_CPU_RST),boot:0x18 (SPI_FAST_FLASH_BOOT)
Saved PC:0x42109a36
SPIWP:0xee
Octal Flash Mode Enabled
For OPI Flash, Use Default Flash Boot Mode
mode:SLOW_RD, clock div:2
load:0x3fce3808,len:0x68
load:0x403c9700,len:0x980
load:0x403cc700,len:0x25a0
entry 0x403c98a4

The UART shows up correctly as CP2102N USB to UART Bridge Controller, but oddly the USB shows up as USB JTAG/serial debug unit (macOS)...

#

CircuitPython version

Adafruit CircuitPython 8.0.0-beta.4-21-g8f414eb4e on QT PY ESP32-S2.  Had 4 QT-PY ESP32-S2's running in my office.  They all core crashed when I restarted my Wi-Fi router.  Simplified my code and reproduced the problem multiple times.

Code/REPL

from secrets import secrets
from time import sleep
import wifi

def connect_to_wifi():
    """Connect to Wi-Fi."""
    print(f'Connecting to {secrets["ssid"]}...')
    # Test Wi-Fi signal...
manic glacierBOT
manic glacierBOT
manic glacierBOT
manic glacierBOT
manic glacierBOT
manic glacierBOT
manic glacierBOT
#

We recently added BREAK -> KeyboardInterrupt for USB CDC (#7227). It would be nice if the same were possible with serial adapters. Assuming that the USB-serial chip supports BREAK, we also need to enable it in esp-idf, so that an event is generated when BREAK occurs: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/uart.html#_CPPv4N17uart_event_type_t10UART_BREAKE

#

The goal is to diff between a PR's latest commit (head commit) and the last commit with a workflow run when available.

The PR's merge ref was being used instead of the PR's latest commit which caused inclusion of changed files from the PR's base branch. The merge ref contains changes in the PR plus the base branch which might have been updated since that last commit.

Suppose two PRs A and B with base branch being main.
PR-B is merged into main prior to PR-A.
Now comparing PR-A's merge...

onyx hinge
#

[any typos mine, especially in the refs. github would simply NOT let me copy that line of text]

analog bridge
#

well the enable BT commit was intentional, I wasn't aware of your PR so that was unintentional 😅

tulip sleet
#

@onyx hinge that PR switches the riscv toolchain back to patch3 by accident

analog bridge
#

danh revereted the riscv toolchain commits

onyx hinge
#

@analog bridge some reason that change didn't go through the pull request process?

analog bridge
#

so I force push removed them

#

we should probably make that branch protected against pushes

onyx hinge
#

I wish that those changes had not been undone by force pushing.

tulip sleet
#

i also did some un-PR'd changes in that repo. I was trying to keep the branch fairly clean, because it contained a bunch of confusing unnecessary commits.

#

the circuitpython8 branch became obsolete, etc. also

onyx hinge
#

yes, because of the force pushing I now have to revise my branch and pull request. That's one reason to NOT force push: it makes any pull request that was in process "include" the commits you wanted to get rid of.

tulip sleet
#

mea culpa and I'll PR changes to that in general. I think this was when no one else was around or something

onyx hinge
#

also it appears that change to that kconfig file did not go through the pull request process, get approval, etc.

#

I went ahead and created branch protection rules for "release/*" in adafruit's esp-idf fork. They are modeled after the main branch protection of circuitpython. As I write this I'm second-guessing that I did this unilaterally so if consensus differs from my feelings please just go ahead and remove the protection again.

tulip sleet
#

I think that's ok. We can undo the rules in case of emergency.

analog bridge
#

@onyx hinge apologies for the trouble
while we are on the topic of protection rules, in adafruit/circuitpython, can branch creation by pushing be disabled?

onyx hinge
#

you mean is it technically possible? I don't know. The way branch protection rules are worded, it all sounds like it applies to branches that exist.

#
Switched to a new branch 'x-test'
jepler@bert:~/src/actions-playground$ git push --set-upstream origin HEAD
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
remote: 
remote: Create a pull request for 'x-test' on GitHub by visiting:
remote:      https://github.com/jepler/actions-playground/pull/new/x-test
remote: 
To github.com:jepler/actions-playground.git
 * [new branch]      HEAD -> x-test
Branch 'x-test' set up to track remote branch 'x-test' from 'origin'.
jepler@bert:~/src/actions-playground$ git commit -mx --allow-empty
[x-test 7685da4] x
jepler@bert:~/src/actions-playground$ git push origin HEAD
Enumerating objects: 1, done.
Counting objects: 100% (1/1), done.
Writing objects: 100% (1/1), 854 bytes | 854.00 KiB/s, done.
Total 1 (delta 0), reused 0 (delta 0), pack-reused 0
remote: error: GH006: Protected branch update failed for refs/heads/x-test.
remote: error: Cannot change this locked branch
To github.com:jepler/actions-playground.git
 ! [remote rejected] HEAD -> x-test (protected branch hook declined)
error: failed to push some refs to 'github.com:jepler/actions-playground.git'
#

so, in my test repo I created a protection rule for "x*" forbidding push. This did not stop the branch being created by push, only updating it via push.

#

fwiw to protect myself from accidentally pushing to repos/forks I didn't intend, I try to do the following: Set up origin with a https URL, and my fork with a git URL. Since happily all the repos I use daily are public, this means I can fetch them all without authenticating over https; and I can push using my git key for authentication. but when I accidentally push to a remote that is https, I get prompted for a password, which stops me doing that.

#

the image shown there doesn't match what I'm seeing at all. hum.

tulip sleet
#

have we had cases of accidental branch creation?

analog bridge
onyx hinge
#

I don't know about in circuitpython specifically, but I know I occasionally push to a different remote than I intended.

#
$ git push origin HEAD
fatal: 'disabled' does not appear to be a git repository
fatal: Could not read from remote repository.
```you can also set the push url to something invalid as a way to avoid ever pushing to that repo.
manic glacierBOT
manic glacierBOT
brazen hatch
#

S3 isn't looking very good.. it's speeds are on single digit kilobytes..

manic glacierBOT
manic glacierBOT
manic glacierBOT
manic glacierBOT
manic glacierBOT
manic glacierBOT
#

CircuitPython version

Adafruit CircuitPython 8.0.0-beta.4 on 2022-10-30; Raspberry Pi Pico W with rp2040

Code/REPL

import board
import pwmio

led = pwmio.PWMOut(board.LED, frequency=5000, duty_cycle=0)

Behavior

led = pwmio.PWMOut(pin, frequency=5000, duty_cycle=0)
Traceback (most recent call last):
File "", line 1, in
TypeError: Expected a Pin

Description

No response

Additional information

Using digitalio.DigitalIO(bo...

manic glacierBOT
#

CircuitPython version

Adafruit CircuitPython 8.0.0-beta.4 on 2022-10-30; Adafruit QT Py RP2040 with rp2040

Code/REPL

from ulab.scipy.signal import spectrogram

Behavior

ImportError: can't import name spectrogram

Description

Had working example of this tutorial: https://learn.adafruit.com/mini-led-matrix-audio-visualizer
Stopped working after latest update.

Additional information

From the repl >>> help(ulab.scipy.signal)
shows only s...

manic glacierBOT
#

Adafruit CircuitPython 8.0.0-beta.4-38-g96fc85cd1 on 2022-11-19; Adafruit QT Py ESP32S2 with ESP32S2

Connecting... 192.867.5.309 Disconnecting... 
Connecting... 192.867.5.309 Disconnecting... 
Connecting... 192.867.5.309 Disconnecting... 
Connecting... 192.867.5.309 Disconnecting... 
Connecting... 192.867.5.309 Disconnecting... 
Connecting... 192.867.5.309 Disconnecting... 
Connecting... 192.867.5.309 Disconnecting... 
Connecting... 192.867.5.309 Disconnecting... 
Connecting...
midnight ember
#

Wifi scanning should be stable across all ESP32-S2's again which is currently at 21 boards according to circuitpython.org If anyone with an S2 has a wifi scanning issue on any version lower than beta 4 please ask them to update to beta 4 or a nightly build if possible.

manic glacierBOT
#

CircuitPython version

Adafruit CircuitPython 8.0.0-beta.4 on 2022-10-30; Waveshare ESP32-S2-Pico with ESP32S2
Adafruit CircuitPython 8.0.0-beta.4 on 2022-10-30; DFRobot Beetle ESP32-C3 with ESP32-C3FN4

Code/REPL

# without .env

>>> import wifi
>>> wifi.radio.start_ap("testing", "amogus sus")
>>> wifi.radio.ap_info
>>> wifi.radio.ap_info()
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'NoneType' object is not callable
>>> a =...
manic glacierBOT
#

CircuitPython version

error present in:

Adafruit CircuitPython 8.0.0-beta.3, RP2040 Stamp with rp2040
Adafruit CircuitPython 8.0.0-beta.4 on 2022-10-30; RP2040 Stamp with rp2040

problem absent in:

Adafruit CircuitPython 8.0.0-beta.1 on 2022-10-01; RP2040 Stamp with rp2040

Code/REPL

import board
from i2ctarget import I2CTarget

i2c_pins = {'scl': board.GP21, 'sda': board.GP20}
i2c = I2CTarget(**i2c_pins, addresses=(0x33,))

while True:
  pri...
manic glacierBOT
lone sandalBOT
manic glacierBOT
manic glacierBOT
analog bridge
#

Optionally, you can select Set as latest release. If you do not select this option, the latest release label will automatically be assigned based on semantic versioning

manic glacierBOT
#
[adafruit/circuitpython] New branch created: tannewt\-patch\-1
#

Thank you for suggesting this. I deleted most of these. Some of these were from micropython, and they are no longer there, so I deleted them here. There were a few named ones by us, and I checked their commits and found the changes had been committed, so I deleted those as well.

I kept all the x.y.z version style branches, because they are of historical interest. I have sometimes gone back to these branches for debugging reasons.

manic glacierBOT
#

As you do this, please consider providing

  • makefile variables that identify important targets e.g., $(FIRMWARE_ELF) $(FIRMWARE_BIN) $(FIRMWARE_UF2) $(FIRMWARE_MAP)
  • phony rules that make them (e.g., firmware-elf: $(FIRMWARE_ELF) marked as .PHONY: firmware-elf

For instance right now I have my own additions that include things like

.PHONY: boot
boot: build-$(BOARD)/firmware.uf2
        _douf2 "$(MOUNT)" "$<" "$(SERIAL)"

where _douf2 is a script that does the serial tr...

onyx hinge
#

I'd share _douf2 but I don't want to end up supporting it, let alone if folksk wanted to use it on non-linux systems 😕

jaunty juniper
#

oh the serial trick with the baudrate ? I didn't think of that !

#

use discotool, it works on all platforms 😛

#

how does the serial trick work exactly ?

#

ah ok just open and close

lone axle
#

@idle owl and/or @trim elm are the board.STEMMA_I2C PRs in many libraries waiting on anything further? Or is anything already in the works with them? Is it okay for me to start working through them with review / merge?

trim elm
#

Oh yeah I’m just about to work through them all

hidden rain
#

where is tannewt?

idle owl
hidden rain
#

Gotcha!

onyx hinge
#

@jaunty juniper this is the bit that tickles the device into bootloader mode. uf2 bootloader except on espressif-family where it goes to esptool bootloader. ```python
import sys
import serial
s = serial.serial_for_url(sys.argv[1])
s.baudrate = 1200
s.dtr = False

candid sun
#

<@&356864093652516868> We'll have our weekly meeting in about 90 minutes from now in this text channel and in the circuitpython voice channel. Please take the time to add your notes in advance to the document: https://docs.google.com/document/d/1bxU_XogCgdpbxVPRA01tDc_tqLY0VFVUkpX6JQzwtd8/edit#heading=h.gnioqc80bi0b -- I look forward to everyone's updates!

manic glacierBOT
jaunty juniper
#

just for your curiosity

onyx hinge
#

Awesome!

#

If that was a discotool entry point we could even start using it in a standard makefile rule

manic glacierBOT
languid whale
#

Meeting Question: Any word on Circuitpython support for BLE on ESP32Sx yet?

slender iron
#

@languid whale work on it will hopefully start next month but no promises

#

(we're hoping to pay nimble devs to help with it)

lone axle
gilded cradle
#

I’m running a little behind, but should be there in time to read my notes.

lone axle
turbid radish
#

💯

candid sun
midnight ember
#

looking forward to seeing the httpserver updates, sounds neat

#

💯

onyx hinge
#

(can't wait to find out what this project idea is)

midnight ember
#

all the improvements lately making led animations super speedy is really cool.

slender iron
#

project updates are welcome too. not just dev stuff here

midnight ember
#

quantization has to be tough, looking forward to reading about that

gilded cradle
#

@tulip sleet it's your turn

slender iron
#

liz is reading for you

tulip sleet
#

i clicked the wrong icon!

#

was talking to no one but myself

slender iron
#

🙂

candid sun
#

Dan do you have anything you want to add to your status update?

tulip sleet
#

nope, all OK, could not hear you because I clicked the headphones icon

midnight ember
#

stablehorde bot account on mastodon took the bot offline just as i was trying to use it. was going to have it create dragons playing synthesizer art. :/

#

jeplers stable diffusion art is worth following on mastodon just for that

manic glacierBOT
#

CircuitPython version

Adafruit CircuitPython 8.0.0-beta.4 on 2022-10-30; S2Pico with ESP32S2-S2FN4R2

Code/REPL

supervisor.disable_autoreload()

Behavior

AttributeError: 'module' Objekt hat kein Attribut 'disable_autoreload'

Description

It seems as if supervisor in CP 8.0.0 beta4 doesn't have the disable_autoreload function anymore. Will this be removed in CP8 or is it not yet included?

Docs latest
https://docs.circuitpython.org...

thorny jay
#

@onyx hinge Plan to do a PS2 to USB keyboard adapter? Or maybe you already did that!

onyx hinge
#

@thorny jay I have not .. I'd be really surprised if there's not one yet

slender iron
#

there is ps2io already iirc

thorny jay
onyx hinge
#

interestingly ps2io is not on rp2040 so somebody would need to do that

#

I mean, you could use a different microcontroller -- seems it's on espressif mcus for instance

midnight ember
#

the 14 segment backpacks are back in stock, i noticed that. they were out of stock when i started my 7 segment project. will be cool to see a 14 segment project.

onyx hinge
midnight ember
#

🍎 🥧

thorny jay
#

Thanks Liz.

lone axle
#

Hope everyone has a great week! Thanks for hosting Liz 🎉

random junco
#

Thanks Liz!

midnight ember
#

Thank you for hosting Liz!

minor plume
#

Thanks for hosting, Liz!

ember iris
#

Great meeting, thank you for hosting Liz!

gilded cradle
#

later

candid sun
#

thanks folks!

manic glacierBOT
midnight ember
#

is there are label in git for a reported issue and then having a dev actually fix the bug. like verified bug fix? just seemed so anti-climactic closing the S2 bug that the devs did a great job of tracking down and fixing.

jaunty juniper
#

you can close with a comment like: fixed by #55555 (PR link)

lone axle
#

I don't know of a label for it. There is some "resolved by" association that can be made between issues and PRs so that when the PR gets merged it will auto close / complete the issue as well although maybe automatically makes more anticlimactic rather than less without having to push the button.

midnight ember
#

oh, hmm i don't know the exact commit that fixed it

#

how would i go about figuring out what to reference as the fix?

jaunty juniper
#

Can't reproduce anymore, thanks everyone 🥰

onyx hinge
manic glacierBOT
#

Following is the diff of sdkconfig built after this change.

diff --git a/ports/espressif/boards/microdev_micro_c3/sdkconfig b/ports/espressif/boards/microdev_micro_c3/sdkconfig
index 53796af53..75caa2d57 100644
--- a/ports/espressif/boards/microdev_micro_c3/sdkconfig
+++ b/ports/espressif/boards/microdev_micro_c3/sdkconfig
@@ -467,0 +468 @@ CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND=y
+CONFIG_RTC_CLOCK_BBPLL_POWER_ON_WITH_USB=y
@@ -544,2 +545,2 @@ CONFIG_ESP_CONSOLE_NONE=y
-CON...
candid sun
#

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/1teUnR_VtWJ7LLngZ9pD38pyB_qpLpL5NZDVHXbybU1U/edit?usp=sharing

manic glacierBOT
midnight ember
#

@lone axle twitch api ready for final review, hope you have fun coming up with some cool twitch integrations.

manic glacierBOT
lone axle
#

@onyx hinge is it okay if I work on renaming with leading underscore and try to fix the out of bounds crash from https://github.com/adafruit/circuitpython/pull/7191 ? I think it would good thing to learn from for me, but don't want to duplicate effort if you're into it already.

manic glacierBOT
#

The PID/VID used in this PR is taken from the device as-is, running the factory firmware OOTB. If that's not appropriate (I was hoping it would be), then I'm open to suggestions on how to proceed, as well as to changes to the current code.

That PID is marked for the Pico rather than a waveshare board. It looks like they've requested PIDs for other boards so hopefully they will for this one too.

manic glacierBOT
#

I do like that idea. From person using the API perspective that feels like the expected behavior.

The first way that comes to mind for me to show nothing is to make a new empty Group and show that. This would visually appear like showing nothing, but is perhaps against the spirit of "Nothing" since it's also just a Group that you can then start adding things to.

Is there some better or more proper way? If it is possible would we want to actually remove the old group and just not add a...