#circuitpython-dev

1 messages · Page 337 of 1

analog bridge
#

is it possible to re-run github ci tests for a specific board ?

tulip sleet
#

nope, unfortunately

#

is it just a github glitch, or did you push another commit?

analog bridge
#

just a github glitch.... I don't like the red crosses though, are these glitches avoidable ?

tulip sleet
#

no, it's their unreliability issue. If the glitch is nothing, we just approve/merge anyway

lone axle
#

I have run the install.sh and export.sh scripts but when I try make BOARD=adafruit_metro_esp32s2 I am still ending up with this error:

CMake Error: CMake was unable to find a build program corresponding to "Ninja".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool.

are there some other requirements for making esp32s2 builds? Or possibly my environment has some kind of issue?

#

ah, need to install ninja-build have gotten further now 🤞

#

Yep that was it. Getting successful builds now. 🥷

manic glacierBOT
slender iron
#

@tulip sleet @onyx hinge my vote is to merge the arg checking for matrixportal and release 6.0.0 with it

onyx hinge
#

@slender iron there are now sort of 3 late-breaking things: #3668 (esp32s2 repl crash), #3666 (rgbmatrix jumbled display), and the arg-checking PR you mentioned.

slender iron
#

k, I haven't looked at 3666

#

anything esp32s2 doesn't need to go in 6.0.x

#

esp32s2 folks should stay on the latest

orchid basinBOT
onyx hinge
#

This is one I'm glad I tested before submitting
"ed for truth

analog bridge
#

what is the best way to enclose port specific code in shared-bindings ?

slender iron
#

there shouldn't be port specific code in shared-bindings. what are you trying to do?

analog bridge
#

I'm working on watchdog implementation for the esp32s2. On the esp32s2 we can deinit watchdog in RESET mode but the current implementation throws an error.

#
//|     def deinit(self) -> None:
//|         """Stop the watchdog timer. This may raise an error if the watchdog
//|         timer cannot be disabled on this platform."""
//|         ...
//|
STATIC mp_obj_t watchdog_watchdogtimer_deinit(mp_obj_t self_in) {
    watchdog_watchdogtimer_obj_t *self = MP_OBJ_TO_PTR(self_in);
    watchdog_watchdogmode_t current_mode = common_hal_watchdog_get_mode(self);

    if (current_mode == WATCHDOGMODE_RESET) {
        mp_raise_NotImplementedError(translate("WatchDogTimer cannot be deinitialized once mode is set to RESET"));
    }

    common_hal_watchdog_deinit(self);
    return mp_const_none;
}
STATIC MP_DEFINE_CONST_FUN_OBJ_1(watchdog_watchdogtimer_deinit_obj, watchdog_watchdogtimer_deinit);
#

I guess this error needs to be moved to common-hal ?

slender iron
#

ah! move that check into the common_hal implementation

#

exactly

manic glacierBOT
analog bridge
#

@slender iron also, this error seems to be a RuntimeError instead of a NotImplementedError

slender iron
#

@analog bridge agreed

manic glacierBOT
orchid basinBOT
manic glacierBOT
manic glacierBOT
analog bridge
#

@slender iron the nrf port takes ms as timeout but s2 can only take seconds. What to do in this case?

#

Should I limit the resolution of the api to seconds only or round off ms in the s2 port.

slender iron
#

@analog bridge good question! How about rounding up? That way it won't be shorter than expected

analog bridge
#

ok! 👍

manic glacierBOT
lapis hemlock
#

@slender iron Scott, if you are not too busy listening to spotify, what is the canonical way of building cp locally? I wanted to test ulab before commiting to github, but I always end up with a linker error /usr/bin/ld: build/py/objmodule.o:(.data.rel.ro.mp_builtin_module_table+0x108): undefined reference to `ulab_user_cmodule'. I took Jeff's script from github https://github.com/v923z/micropython-ulab/blob/master/build-cp.sh, where it is part of the workflow, and it works without glitches.

#

Oh, this is really diabolical: circuitpython is cloned recursively: /home/v923z/sandbox/cp/circuitpython/extmod/ulab/circuitpython/extmod/ulab/circuitpython/extmod/ulab/circuitpython/extmod/ulab, and it goes on ad infinitum. I guess, I had better figure this out first.

slender iron
#

😬

manic glacierBOT
#

What is the difference between a pin level alarm and a pin edge alarm? Won't a low level alarm fire at the same time as falling edge would?

My biggest concern is having each alarm enabled independently of each other and independent of use. This prevents validating that 1) the alarms can all be set at the same time and 2) they can all work at the desired sleep level.

1 is important because pin alarming might not actually be independent. On the ESP32-S2 ([reference](https://docs.espressif...

#

Using the guide from Adafruit here:
https://learn.adafruit.com/adafruit-eink-display-breakouts/grayscale-29-overview

The code returns the following error:
code.py output: Traceback (most recent call last): File "code.py", line 26, in File "adafruit_il0373.py", line 184, in __init__ TypeError: extra keyword arguments given

The offending code is this section, with line 26 the first line here:
`display = adafruit_il0373.IL0373(
display_bus,
width=296,
height=12...

orchid basinBOT
lapis hemlock
#

@slender iron Thanks! I think I have forgotten to update the submodules 😊. You should, however, note somewhere that for the unix port, one has to make axtls before running make.

ionic elk
#

@slender iron could we talk about UDP sometime today?

manic glacierBOT
slender iron
#

@ionic elk sure! what time works for you?

ionic elk
#

I could do right now, if you want?

#

Or in an hour, two hours, whatever's good

slender iron
#

now works

ionic elk
#

ok I'm in amelia

slender iron
#
import wifi
import socketpool

# connect to wifi
wifi.radio.connect(essid, password)
pool = socketpool.SocketPool(wifi.radio)
ntp = adafruit_ntp.NTP(pool)
manic glacierBOT
slender iron
slender iron
#

@hearty tapir nice! see anything interesting?

#

(here for dev discussion)

hearty tapir
#

W (12677) mbedtls: ssl_tls.c:5808 x509_verify_cert() returned -9984 (-0x2700)

#

I think the mbedtls code would expect a call to mbedtls_ssl_set_hostname()

slender iron
#

huh, I'd expect the esp_tls wrapper library to call it

hearty tapir
slender iron
#

what do we set skip_common_name to?

#

I think our esp_tls_cfg_t is all zeroes

hearty tapir
#

Possible, I'll need to put some print statements to understand what is inside those variables

slender iron
#

that's how I debug too 🙂

#

thanks for the help!

hearty tapir
#

Can I attach a txt file here with the log?

#

(what I see on the console)

slender iron
#

sure, here or a gist

hearty tapir
#

Once it fails, it also hangs - the wifi disconnect is not expected and doesn't happen without the debug logging enabled

#

I read in the documentation to set to "debug" - but I choose verbose. I'll build another image with "debug" and have a look at that log

slender iron
#

in tools there is a python program that can make sense of the Backtrace lines

hearty tapir
#

Good hint, will have a look. Today I can't stay awake beyond midnight though. So 20 more minutes and I'll need to call it day.

slender iron
#

kk, feels like you are getting close

#

I'm doing some eink tweaking and then I can look too

hearty tapir
#

For this image I haven't built in the latest set of certificates from mozilla. Depending on the log output I may give that one more try. Thanks to the win10 the compilation goes fast, thus 2-3 builds are no issue 🙂

slender iron
#

🙂

thorny jay
#

I don't know who will take the timestamp of next weekly meeting. So here is my code for CLUE to send to keyboard by clicking the B button. To reset the timer, use the A button: https://gist.github.com/dglaude/75b90856b7fbab4632788a63f2694f82
@thorny jay I have now a Clue Timestamp application. @slender iron maybe you want to test that for Friday. And it could be used on Monday's meeting. (somehow I went to 3 iterations to find the right way to scan the button without loosing some).

Gist

Timestamp printing for CLUE (US Keyboard). GitHub Gist: instantly share code, notes, and snippets.

slender iron
#

@thorny jay sure! I've added it to my streaming checklist so I set it up on friday

#

before the stream

hearty tapir
slender iron
#

👍

#

@gilded cradle when you were working with display init sequences did you realize the docs don't match the implementation for delay?

hearty tapir
#

I'll try one more thing, where I revert mbedtls back to info and bring the console to debug .. I'm missing the ESP output

slender iron
#

huh

gilded cradle
#

@slender iron which display are you referring to?

slender iron
#

hx8357

gilded cradle
#

I think I got the init code from the arduino library

slender iron
#

the displayio docs say the delay time is immediately after the param count

gilded cradle
#

And adapted it to the way CircuitPython does it

slender iron
#

the implementation gets the delay time from after the parameters

gilded cradle
#

Oh, are the codes wrong?

slender iron
#

the docs don't match the code

#

so I'm thinking I'll update the docs

gilded cradle
#

ok

slender iron
#

since code has been tested with the implementation

gilded cradle
#

I did it like a year and a half ago and don't really remember exactly what I did too well

slender iron
#

ya, same

#

that's why I was confused when the behavior didn't match the docs 🙂

gilded cradle
#

No problem 🙂

slender iron
#

at least the implementation is consistent

gilded cradle
#

That's good

#

I probably looked at the code and not the docs

slender iron
#

👍

#

I may have written them before I implemented it

#

putting the delay time after the params makes it easier to add or remove a delay when you have parameters

gilded cradle
#

yeah

slender iron
#

since they stay in the same position

tulip sleet
#

@slender iron are you available for another conversation? 1. short term rc.2 or not ; 2. more sleep API discussion.

slender iron
#

yup

manic glacierBOT
manic glacierBOT
manic glacierBOT
manic glacierBOT
#

I am using CPython 6.0 RC2

I am trying to use a DS18B20 on a Pynt on D3 (yes, the resistor is installed) along with D4 as a digital input. However when I use the scan command on D3 it returns no devices (Max device found) if I scan D4 (the DS18B20 is still attached to D3) it finds the DS18B20 and it works just fine. However, now I can't use D4 for my input as the pin is in-use.

Swapping the devices between D pins does not help.

This is an error in the onewire scan someplace or deep...

dire spruce
#

I can’t find an answer. Seems like nobody in makecode room. But is there a way to make makecode work with the adafruit 16 servo pwm driver

manic glacierBOT
#

@tannewt and I talked again today, and revised the example in @tannewt's comment above.

A few more notes:

Re rising/falling edge detection: Both level and transition can often be detected. I have seen both, and I even see "transition either direction".

Waking from deep sleep on pin change: On a number of chips, this is implemented as "tamper detection". On nRF, it is just called "DETECT") Some chips just ...

manic glacierBOT
cobalt grail
manic glacierBOT
lone axle
#

@cobalt grail there hasn't been a release since it came out yet. But there are some "absolute newest" builds for it in the S3 linked on the download page.

#

ESP32-S2 as a device family is still being actively worked on. I don't think it's supporting 100% of everything that other devices families support with Circuit Python. But many of the basics are in place already.

manic glacierBOT
#

I have an implementation on a more robust base than this prototype almost done. I hope to have pull requests ready for review this week. A few more days to weeks of review and discussion will then probably be required before the final merge.

Thanks for testing! Would you mind telling which of the optional keyword arguments to set_next_code_file you are using and with what values? Because we will probably not keep all of them for the final version, to keep things simple. Getting feedback ...

thorny jay
#

Got my MagTag today. Is the CircuitPython support for it done yet?
@cobalt grail Here is the first demo from LadyAda: https://gist.github.com/ladyada/2f117c1c83ed78e02c0f324724474698 and the firmware is linked from the last message of this issue: https://github.com/adafruit/circuitpython-org/issues/575

Gist

CircuitPython Countdown for MagTag Demo. GitHub Gist: instantly share code, notes, and snippets.

GitHub

The MagTag is not visible yet on CircuitPython.org Waiting for this pull request to be merged: adafruit/circuitpython#3653 I think that right now, the firmware should be here: https://adafruit-circ...

manic glacierBOT
#

I did a quick test between UM Feather S2 and a Feather Sense with RX/TX connected running this "chirp" script:

import board
import time

uart = board.UART()

b = bytearray()
text = "HELLO"
b.extend(text.encode())

while True:
    #read = uart.read()
    #if read:
    #    print("we got: {}".format(read))
    written = uart.write(b)
    print("wrote {} bytes".format(written))
    time.sleep(3)

It is working correctly for sending and receiving on both sides.

prime cove
#

So I'm trying to port the esp32spi_wsgiserver to the Wiznet5K. I feel like I'm making progress, but I could be fooling myself haha. Anyone able to point me in the right direction on things?

prime flower
#

@prime cove sure!

#

I havent spent much time in the WSGIServer repo

#

BUT

prime cove
#

I've actually been referencing that!

prime flower
#

I've only ported Ethernetclient

prime cove
#

I'm definitely unfamiliar with working with sockets and this sort of thing. Right now, I can load up the IP in the browser, and the W5k grabs the data and appears to respond from the WSGI finish_response function. However the browser is saying the response was empty.

#

Another thing to note, I can only get the code to react to the browser connection if I hit refresh while it's still trying to connect.

umbral dagger
#

Reasons why CIRCUITPY won't mount while BOOT & CP load is fine and REPL is fine?

onyx hinge
#

I'm seeing more odd crashy-crashy on esp32s2 at the repl. ```Thread 1 received signal SIGTRAP, Trace/breakpoint trap.
[Switching to Thread 1073346540]
mp_load_method_maybe (obj=0x3fd8bbd0, attr=17, dest=0x3ffde690) at ../../py/runtime.c:1074
1074 } else if (type->attr != NULL) {
(gdb) p type
$1 = (mp_obj_type_t *) 0xffffffff
(gdb) where
#0 mp_load_method_maybe (obj=0x3fd8bbd0, attr=17, dest=0x3ffde690) at ../../py/runtime.c:1074
#1 0x4008403d in gc_sweep () at ../../py/gc.c:298
#2 0x40084221 in gc_collect_end () at ../../py/gc.c:397
#3 0x4009feec in gc_collect () at ../../main.c:549
#4 0x400844db in gc_alloc (n_bytes=<optimized out>, has_finaliser=false, long_lived=false) at ../../py/gc.c:570
#5 0x40083d8f in m_malloc (num_bytes=116, long_lived=false) at ../../py/malloc.c:81
#6 0x40087aa7 in mp_lexer_new (src_name=96, reader=...) at ../../py/lexer.c:828

I've just pasted in the text `import board, audiobusio` and hit enter (audiobusio is WIP in my branch).  Maybe it's a problem in audiobusio.
#

it seems odd that I could already be in a "no free heap, need to GC" state

analog bridge
#

@onyx hinge Are you working on audioio ?

#

or is it just audiobusio for now...?

idle owl
#

@lone axle Did you order a MagTag?

lone axle
#

@lone axle I did, just got the order shipped notification a little bit ago actually.

idle owl
#

Excellent, I may have a mission for you. I'll let you know.

#

@lone axle I do. Your mission, should you choose to accept it, is to make the Adafruit CircuitPython Slideshow library work the same on the MagTag as other displays. MagTag requires display.refresh() to update to the next image, other displays to not. And you can't use slideshow.update() because of timing issues, you have to use slideshow.advance() which means auto_advance and dwell do nothing. I'll send you working code here in a minute, and you'll see how it doesn't quite match the simpletest.

#

I imagine it will involve something checking whether the display argument has a refresh option, and using it if so, otherwise ignoring it. But I'm tossing things out here, I don't know for sure. I trust you to figure something out.

lone axle
#

I am definitely up for that. I have been tinkering in the SlideShow anyway. I am interested in extending it to allow text slides that can be configured with JSON files stored alongside of the images. So I am getting familiar with it's internals anyway.

idle owl
#

@lone axle Perfect. That's excellent. I really appreciate it. Please keep @split ocean posted on your progress. I think the best way to go about it is to file an issue on the library, tag jedgarpark and keep him posted there. When you put in a PR, please request a review from him either using the request review mechanism, or by tagging him in the comment.

lone axle
#

Will do.

split ocean
#

Thanks @lone axle thanks @idle owl !

#

@lone axle one thing to note is that in the il0373 display setup you'll need to call seconds_per_frame to override the built in value of 180, which is a very conservative value meant to prevent people from refreshing too much and borking the display.

gilded cradle
#

@slender iron my CircuitPython seems to have reset itself and erased all of my files. Do you know if there's a way to get them back?

#

Never mind, I just realized I made a backup of the libraries right before it happened

onyx hinge
#

@analog bridge I think that similar code will cover both audiobusio and audioio but I'm not sure -- so far I haven't gotten anything working.

#

I'm starting with i2sout

analog bridge
#

what I understand from the idf is that the built-in DAC can also be controlled with i2s

#

The DAC channels can also be driven with DMA-style written sample data, via the I2S driver when using the “built-in DAC mode”.

#

from idf docs 👆

manic glacierBOT
analog bridge
#

@onyx hinge I took a look at your audioout-esp32 branch. I like how you are handling the built-in idf errors.

#

Can you make a separate PR for the error handling change... I would like to use it on the modules I am working on at the moment.

manic glacierBOT
onyx hinge
#

@analog bridge good idea, and maybe it will allow me to feel like I made progress today

#

I have weird problems while trying to use the REPL. I found and fixed one thing but I'm still seeing problems.

analog bridge
#

I am building your audio branch now. Can you let me know at what point it fails.

onyx hinge
#

so what I have locally is different than in the pushed branch. what I pushed had lots of compile errors.

#

and I've gone on to a tangent, which is this REPL problem

analog bridge
#

ooh.... yeah my build failed too...

idle owl
#

@gilded cradle There's two boards here that probably shouldn't be - NeoTrellis M4 and Circuit Playground Express (even with displayio, it doesn't imply a built-in display?)

gilded cradle
#

The CPX has a version with displayio built in for the Gizmo. I'm not sure about the neotrellis.

idle owl
#

Fair enough.

gilded cradle
#

Yeah, neotrellis should probably have it corrected

#

I think I had display because you could technically display stuff with the neopixels, but I suppose that's a bit misleading.

idle owl
#

I get where you were going with it at least

#

but yeah. I would take it to mean the board has a display on it.

gilded cradle
#

I'll submit a PR to remove that

idle owl
#

Thanks!

onyx hinge
#

I'm really puzzled as to what's going on. It seems like sometimes, something splatters a bunch of memory with the pattern 07 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff and then everything goes wrong

onyx hinge
#

I did switch my build config to "improve" debugging: ```+CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG=y
+CONFIG_COMPILER_OPTIMIZATION_DEFAULT=y
+CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y

manic glacierBOT
slender iron
#

@onyx hinge those settings would be good to have in the debug sdkconfig

onyx hinge
#

assuming they're not what's making things flaky for me I agreee 🙂

slender iron
#

🙂

#

@prime flower I'm around now if you want to chat

prime flower
#

@slender iron Ok, I'm going to pause a current task. and open up notes

slender iron
#

kk

manic glacierBOT
manic glacierBOT
solar whale
#

@idle owl regarding flashing a metro_esp32s2 -- on my Linux system I have always been able to flash it at /dev/ttyACM0 not /dev/ttySx

lone axle
#

^ same for me on linux

idle owl
#

@solar whale Hmm. Alright. Thanks Jerry, and @lone axle. Tim - do you mind updating the guide to include both?

lone axle
#

Nope I can do that.

idle owl
#

Beautiful, thank you.

manic glacierBOT
#

Hi @cwalther,

I have a pretty simple use case, my supervisor calls are as follows:
supervisor.set_next_code_file(scriptName, reload_on_success=True)
supervisor.reload()

For me, I prefer the VM not running my menu system (code.py) when the secondary script raises an unhandled exception. I am developing a factory test fixture, so leaving error information on the screen is preferential. That said, for commercial products it may be preferential to reload the original code....

manic glacierBOT
manic glacierBOT
manic glacierBOT
tulip sleet
#

@slender iron At this point I think I will do rc.2 and defer 6.0.0 final until Sunday or Monday, because doing it tonight is like releasing it tomorrow, and that only gives us a day or two before the weekend if issues crop up when a lot of people upgrade.

slender iron
#

kk, works for me

tulip sleet
#

roger

manic glacierBOT
#
[adafruit/circuitpython] New tag created: 6\.0\.0\-rc\.2
onyx hinge
#

Thanks for working on the release Dan!

manic glacierBOT
manic glacierBOT
#

It appears that this is ONLY related to OneWire. If I treat the D3 and D4 as inputs and outputs they are mapped correctly. When I scan with onewire it is always opposite of what I am attached to: Connected on D4 - scan D3 and it finds the DS18B20 - Connect on D3 scan D4 and it finds the DS18B20 - scan the pin you are on: connected D4 scan D4 you get too many results (I've increased the max results and I get a return of a bunch of results but no DS18B20)

orchid basinBOT
tulip sleet
#

all: I'll finish the 6.0.0-rc.2 release first thing in the morning: there was a backlog of GitHub actions.

rigid birch
#

Is there any way to create a web server on the esp32s2?

slender iron
#

@rigid birch not yet. socket needs bind and accept (?) I think

manic glacierBOT
solar whale
#

@tulip sleet Should the main branch now be at 6.0.0-rc.2? I just did a pull/build and it reports rc.1 and there are significant diffs from 6.0.0-rc.2 ```
Press any key to enter the REPL. Use CTRL-D to reload.
Adafruit CircuitPython 6.0.0-rc.1-247-ga47dea492 on 2020-11-12; FeatherS2 with ESP32S2

manic glacierBOT
manic glacierBOT
crimson ferry
#

What's the distinction of an exception like this (PyPortal, rc.1, ESP32SPI 3.5.3, Requests 1.7.5): File "adafruit_requests.py", line 476, in _send _SendFailed:Do I handle it like any other?

tulip sleet
#

@solar whale There's a 6.0.x branch we made a while ago, which has the most recent ``6.0.0-*tags. This branch is not on main, and we've merged changes from6.0.xback to main a couple of times. This was to keep the6.0.0` releases mroe stable.

solar whale
#

@tulip sleet ah -- thanks -- so 6.0.x is now at rc.2

tulip sleet
#

right, exactly, but I haven't updated circuitpython.org yet because last night the build links would have been broken becuase of the delays in building.

#

i just started working and will be doing that now.

solar whale
#

no problem -- and whenever the next merge to main occurs, then main will move to rc.2 as well --Not a request from me, just want to make sure I follow the process.

tulip sleet
#

the tags are on particular commits, so main will be caught up with the the rc.2 changes, but the tag itself will not show up on the main branch, since it will be a merge commit, and that exact commit will not also be on the main branch.

#

When i first learned git, I found this book to be very helpful, in particular chapters 2 and 3, which explain branches, commits, etc. clearly (I thought): https://git-scm.com/book/en/v2

solar whale
#

Thanks!

#

My confusion was that main now shows a rc.1 in the output of the boot_out.txt file Adafruit CircuitPython 6.0.0-rc.1-247-ga47dea492 on 2020-11-12; FeatherS2 with ESP32S2 -- I assume that will change to rc.2 if/when 6.0.x is merged to main, correct?

tulip sleet
#

I think so, the version tag goes back along the tree and finds the nearest tag, but that may be back along another branch that wsa merged in. The gitk tool's graph can be helpful.

solar whale
#

Thanks. This is not important -- I should stop distracting you ...

tulip sleet
#

I am just reading mail, etc.

#

np

#

In particular, if you think the book is really helpful, we could add a reference to it in the git guide.

#

there are probably videos that are equally helpful for those who like learning from videos

solar whale
#

OK -- I'll let you know what I think after reading it.

prime flower
#

@solar whale I'm curious because I'm about to try it - have you tried POST'ing to the IO HTTP API using the ESP32S2 yet?

#

also @crimson ferry

solar whale
#

@prime flower I have not. Good luck!

prime flower
#

ok! thanks

crimson ferry
#

I have not either

rigid birch
#

@slender iron Might be good for your deep dive tomorrow!

orchid basinBOT
ionic elk
#

@tulip sleet are you around?

tulip sleet
#

yep

ionic elk
#

I'm trying to get a circuitpython program to run on Cpython, and it says I'm missing the RTC module

#

do you know how to get around that, perchance?

tulip sleet
#

i guess we don't have a blinka impl of it yet. It's not very complicated, so you could just add an rtc.py that does what it needs to do (or maybe nothing, if the idea is to set the time, but of course a blinka host usually already knows what time it is)

ionic elk
#

Actually no wait I'm dumb, I think it probably only works with Scott's version, not one I install with pip

#

This is an even dumber question, but if I want to use a python module that's in a parent directory, say an project/examples/script.py accessing a project/module.py, is there a quick way to do that?

sacred blade
#

Hi all ! I've made some modifications in Adafruit_CircuitPython_WSGI (status 404 and 500, OPTIONS handling for CORS requests) and adafruit_esp32spi_wsgiserver.py (parse_headers implementation), so that wsgi server is usable on a MatrixPortal. This allows me to push images to the MatrixPortal from a web app. Who should I coordinate with to discuss them and try to put them in those libraries ?

tulip sleet
#

you can use a leading dot in an import, I think, import ..foo goes up two levels. I found it a bit cantankerous

ionic elk
#

hmm, it didn't like that

tulip sleet
#

@sacred blade Sounds neat! Open an issue on the appropriate library(ies), or just submit a PR.

#

@ionic elk it has to be part of the same package, and I don't think the examples are in the same package. If you've installed the library, then you can copy the example to a top level

sacred blade
#

@tulip sleet ok, thanks !

ionic elk
#

I'll poke Scott about it when I see him

#

not hard to just copy the module into the examples folder

tulip sleet
#

the idea is the the examples would not be in the examples directory, you wouldn't be running them from there. They would get copied into your current directory, and the library would be installed via pip. It's really that sys.path is set up properly to find everything. You could set PYTHONPATH

ionic elk
#

It's not a big deal I was just wondering if there was some super easy way

#

I'm still at the stage of learning python where I keep finding things save tons of time and feel embarrassed for not having known about them.

orchid basinBOT
tulip sleet
onyx hinge
#

@tulip sleet 🔥

tulip sleet
#

🎈

#

that's not a very good balloon, the pic is much nicer

prime flower
#

@tulip sleet 🎈 hurray, I just got it from S3 and tossed it onto my esp32s2

timber mango
#

Hey! I have a supernoob question. I am running the beginner tutorial with Matrix Portal. When I leave the code as it is, the led is turned off, and the NeoPixel goes green-yellow-blinkingBlue, and code changes do not affect this behavior. I checked pinouts, and I found out that it should be called board.NEOPIXEL in line 5th, but then it just lights steady on green. Code does what it should only on the tiny led, when I will call it board.L in line 5th. What I do wrong that I cannot access neopixel even if I call it as it should be?

orchid basinBOT
tidal kiln
#

@timber mango NeoPixels are different than basic LEDs, like the one on board.L, so would need different code

timber mango
#

Aaa, ok, thanks. I need to go deeper into it then.

tidal kiln
#

for the on board neopixel, use board.NEOPIXEL and set the length to 1

timber mango
#

Ok, cool, thank you!

crimson ferry
#

There are SO many CircuitPython boards now, we're going to need more filters on circuitpython.org, like maybe chip family or key features ...oh, never noticed that slider before

tidal kiln
#

also, as you read stuff, if you find references to "dotstars", those are like neopixels but require a different library

timber mango
#

Thank you for helping me 🙂

tidal kiln
#

np

timber mango
#

It works, haha.

ionic elk
#

@timber mango the gist with Neopixels is you're actually sending them instructions, rather than just turning them on and off, so you have to use libraries that handle that for you

#

makes them super useful when you have big arrays of them, because you don't need so many wires, but you wouldn't be able to use one in a handmade circuit, you gotta have a microcontroller

timber mango
#

Yeah, I am reading now about it. I found even some libraries which do all kinds of stuff. I installed CP like hour ago, and I am just having enormous amount of joy staring in the blinking diode I can talk to directly 😄

ionic elk
#

it's a fun time!

lone sandalBOT
slender iron
#

@solar whale I expect main to build as 6.1.0-alpha.0 but the merges from 6.0.x may override that

#

@ionic elk env PYTHONPATH=. python examples/requests_https_cpython.py The env is a fish thing. I think in bash you omit it.

solar whale
#

@slender iron Now that you mention it, I think it was building as 6.1.0 at one point, but now is back to 6.0.0-rc.1 due to merges from 6.0.x

onyx hinge
#

@slender iron @analog bridge should IO0/1/2 pins be good general choices while testing I2SOut on this Kaluga or might they interfere with other functions? I see what is mostly a good I2S waveform, but sometimes it is glitched

slender iron
#

¯_(ツ)_/¯

#

@solar whale we could add another 6.1 alpha tag

onyx hinge
ionic elk
#

@slender iron can you comment on what this stuff is? Did you write it? I don't see anything like it in the UDP examples ESP provides.

    const struct addrinfo hints = {
        .ai_family = AF_INET,
        .ai_socktype = SOCK_STREAM,
    };
    struct addrinfo *res;
    int err = getaddrinfo(host, NULL, &hints, &res);
    if (err != 0 || res == NULL) {
        return mp_const_none;
    }

    #pragma GCC diagnostic push
    #pragma GCC diagnostic ignored "-Wcast-align"
    struct in_addr *addr = &((struct sockaddr_in *)res->ai_addr)->sin_addr;
    #pragma GCC diagnostic pop
    char ip_str[IP4ADDR_STRLEN_MAX];
    inet_ntoa_r(*addr, ip_str, IP4ADDR_STRLEN_MAX);
    mp_obj_t ip_obj = mp_obj_new_str(ip_str, strlen(ip_str));
    freeaddrinfo(res);
solar whale
#

@slender iron Only if you or others need it -- Now that I understand, it does not matter to me....

ionic elk
#

Does it actually do anything? The only other difference seems to be that because the socket is made beforehand, we don't run the socket allocation functions. Does inet_ntoa_r or any of the other stuff impact something behind the scenes that would affect the socket?

analog bridge
#

@onyx hinge 🤔 ....will have to take a look at the datasheet/technical reference manual for that.

onyx hinge
#

@analog bridge if you know some that are going to be safe I can just switch

slender iron
#

Does it actually do anything? The only other difference seems to be that because the socket is made beforehand, we don't run the socket allocation functions. Does inet_ntoa_r or any of the other stuff impact something behind the scenes that would affect the socket?
@ionic elk It's converting an ip address byte array to a string

#

I think it originates in micropython's socket

ionic elk
#

What should I do with the string?

slender iron
#

make sure and look in ipaddress for helpers too

analog bridge
#

@onyx hinge I saw 13, 15 & 21 being used in the idf's i2s example.

ionic elk
#

right now it doesn't seem like it does anything with it

onyx hinge
#

@analog bridge good clue, maybe I can just do that

slender iron
#

if it's code I added, it's likely incomplete

ionic elk
#

I'm just trying to figure out whether I need to keep it - the sendto and recievefrom functions don't need a string like that, but do I need to do some post-processing after that maybe?

onyx hinge
#

where did you run across that code @ionic elk -- I see it in common_hal_socketpool_socketpool_gethostbyname

slender iron
#

I suspect the python version of sendto takes in a string ip and receivefrom returns one

ionic elk
#

@onyx hinge I'm working on the functions that UDP needs, sendto and recievefrom, based on one of Tannewt's branches

onyx hinge
#

ah yeah it is returned from recvfrom

ionic elk
#

@slender iron so why doesn't the sendto function need it as a parameter 🤔

onyx hinge
#

sendto: needs to convert an address string into an address

ionic elk
#

oh no wait probably I need to replace HOST_IP_ADDR with it

onyx hinge
#

recvfrom: needs to convert an address into an address string

ionic elk
#

that's what it is

ionic elk
#

that's just some macro from the example code that made it over

slender iron
#

I'll tag another 6.1 alpha after

onyx hinge
#

urp there's a conflict tho

ionic elk
#

yeh pot conflict

slender iron
#

ya, stupid translation file

onyx hinge
#

hehe the conflicts and the "make translates" are aggrivating but it's such a great feature to have

slender iron
#

ya, agreed

onyx hinge
#

(also, you said it -- not me)

slender iron
#

I think I fixed this last time by changing the last updated time back

ionic elk
#

I mean all it conflicts on is the created date of the danged translation

#

which is kind of silly

#

I'd still lean towards just scrapping that line altogether

slender iron
#

I think that's easier said than done

ionic elk
#

Oh is it not one of our scripts? too bad

manic glacierBOT
slender iron
#

maybe it is actually. weblate only updates .po files

#

we could blank it in make translate

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

☝️

ionic elk
#

a new PR?

#

I'm confused is that for your merge conflict?

slender iron
#

ya, new PR to 6.0.x to change the translation creation time

onyx hinge
#

yay did figure out one more thing about the i2s failing after awhile

#

I had a range of bytes start..end of audio data .. I sent bytes starting at "start", then incremented end by the number of bytes sent

manic glacierBOT
onyx hinge
#

@slender iron want to entertain a change to remove the POT-Creation-Date from circuitpython.pot?

slender iron
#

just looking at it now

onyx hinge
#

ah ok

#
-       find $(TRANSLATE_SOURCES) -type d \( $(TRANSLATE_SOURCES_EXC) \) -prune -o -type f \( -iname "*.c" -o -iname "*.h" \) -print | (LC_ALL=C sort) | xgettext -f- -L C -s --add-location=file --keyword=translate -o circuitpython.pot -p locale
+       find $(TRANSLATE_SOURCES) -type d \( $(TRANSLATE_SOURCES_EXC) \) -prune -o -type f \( -iname "*.c" -o -iname "*.h" \) -print | (LC_ALL=C sort) | xgettext -f- -L C -s --add-location=file --keyword=translate -o - -p locale | grep -v 'POT-Creation-Date' > $@
slender iron
#

we can change xgettext to omit the header

onyx hinge
#

find $(TRANSLATE_SOURCES) -type d ( $(TRANSLATE_SOURCES_EXC) ) -prune -o -type f ( -iname ".c" -o -iname ".h" ) -print | (LC_ALL=C sort) | xgettext -f- -L C -s --add-location=file --keyword=translate -o [-circuitpython.pot-]{+-+} -p locale {+| grep -v 'POT-Creation-Date' > $@+}

#

I don't think we can omit the whole header

slender iron
#

--omit-header

onyx hinge
#

if only because > Note that using this option will lead to an error if the resulting file would not entirely be in ASCII.

#

well I guess maybe circuitpython.pot is completely ASCII, but the other po files are not

slender iron
#

where is that from?

slender iron
#

the header's content type is currently CHARSET

onyx hinge
#

if the manual timestamp edit is the easiest way to resolve this problem right now I can go ahead and approve that other PR .. want me to?

slender iron
#

ya, you cand just remove that specific header

#

yes please

#

we can fix the larger issue later

manic glacierBOT
onyx hinge
#

sounds fine to me

slender iron
#

I agree omit header is too big of a stick

#

so you can add the strip to the command if you like 🙂

onyx hinge
#

I'm too deep in other stuff to push this right now, but maybe if you're lucky i'll push it by accident with my i2sout changes ☹️

slender iron
#

np

#

I skipped the CI on it. I'll let 3681 run it

onyx hinge
#

The glitches followed the pins, hm

slender iron
#

@onyx hinge may be worth posting to the esp forum

onyx hinge
#

the very short high pulses should not be there, in my understanding of i2s. but it may just be induced by the other edges or something

#

usually I don't see these when scoping logic with the saleae

slender iron
#

is it just noise? does it work?

manic glacierBOT
onyx hinge
#

I haven't hooked up a real i2s decoder/audio amplifier yet, but saleae's decoder seems to think it's okay mostly

slender iron
#

I'd suggest doing so before you worry too much about it

onyx hinge
#

sure, but that sounds like work

slender iron
#

it'll save you from chasing a bug that doesn't matter in the end

onyx hinge
#

true

#

I'm just glad I have anything coming out at all, it felt like a long ride to get here

ionic elk
#

I had some stuff like that on the Neopixel issues

onyx hinge
#

but I'm getting the hang of esp-idf a little bit

manic glacierBOT
analog bridge
#

@onyx hinge great! I was about to ask you the same... will give it a try tomorrow.... its sleep time for me 💤

onyx hinge
#

I forget if i2s is signed or unsigned

#

logic seems to be acting like it's unsigned

#

yeah it's not exactly sleep time but it is time for a good long break

manic glacierBOT
#

I was running code to fetch bitcoin and came across this mysterious error.

Traceback (most recent call last):
  File "code.py", line 82, in 
  File "code.py", line 74, in 
  File "/lib/adafruit_requests.py", line 585, in get
  File "/lib/adafruit_requests.py", line 563, in request
  File "/lib/adafruit_requests.py", line 423, in _get_socket
OSError: 0
slender iron
#

@hearty tapir any more TLS progress? I'm going to look this afternoon

manic glacierBOT
#
  • Namespace identifiers (strings) are stored as keys of key-value pairs in namespace with index 0.
  • Each key-value pair belongs to one of the namespaces. Values corresponding to these keys are indexes of these namespaces.
+-------------------------------------------+
| NS=0 Type=uint8_t Key="wifi" Value=1      |   Entry describing namespace "wifi"
+-------------------------------------------+
| NS=1 Type=uint32_t Key="channel" Value=6  |   Key "channel" in namespace "wifi"
+---...
onyx hinge
#

Guido van Rossum, the creator of the Python programming language, today announced that he has unretired and joined Microsoft's Developer Division. From a report: Van Rossum, who was last employed by Dropbox, retired last October after six and a half years at the company. Clearly, that retirement wasn't meant to last. At Microsoft, van Rossum says, he'll work to "make using Python better for sure (and not just on Windows)." A Microsoft spokesperson told us that the company also doesn't have any additional details to share but confirmed that van Rossum has indeed joined Microsoft. "We're excited to have him as part of the Developer Division. Microsoft is committed to contributing to and growing with the Python community, and Guido's on-boarding is a reflection of that commitment," the spokesperson said. https://techcrunch.com/2020/11/12/python-creator-guido-van-rossum-joins-microsoft/

Guido van Rossum, the creator of the Python programming language, today announced that he has unretired and joined Microsoft’s Developer Division. Van Rossum, who was last employed by Dropbox, retired last October after six and a half years at the company. Clearly, that retire...

slender iron
#

I think scott hanselman is in the developer division too

ionic elk
#

Microsoft is eating everything again

grim dagger
#

The Circuitpython page for NeoTrellis M4 says: "The native USB port can turn it into a MIDI USB device if you like - currently that’s only supported in Arduino." But the built-in modules include usb_midi. Can I expect MIDI to work on the NeoTrellis with 6.0.0-rc.2?

slender iron
#

ya, I believe so

#

that text may predate when I added midi support

#

you can also look for learn guides that use it

grim dagger
#

you can also look for learn guides that use it
@slender iron Not sure I saw any... the sequencers were Arduino based I think. But I'll look again and then just go ahead and try it.

manic glacierBOT
prime flower
#

The esp32s2 circuitpython wifi stuff is really good! thanks to those who worked on it 🙂

manic glacierBOT
#

I'm not sure if it was a fluke or not. But I also saw this error several times on the UM Feather S2 pulling from Hackster news API. Running the same code on Metro ESP32S2 I never ran into this error at all.

Even on the Feather S2 it was not consistently this error though, many of the requests still succeeded. So it's possible I just got "luckier" on the Metro.

manic glacierBOT
manic glacierBOT
manic glacierBOT
#

In a debug build

ESP_ERROR_CHECK failed: esp_err_t 0x106 (ESP_ERR_NOT_SUPPORTED) at 0x4002f190
file: "common-hal/wifi/__init__.c" line 147
func: wifi_reset
expression: esp_netif_deinit()

abort() was called at PC 0x4002f193 on core 0
Setting breakpoint at 0x400304fa and returning...

It appears esp_netif_deinit() never succeeds:

esp_err_t esp_netif_deinit(void)
{
    if (tcpip_initialized == true) {
        /* deinit of LwIP not supported:
         * do not deinit...
manic glacierBOT
manic glacierBOT
#

Testing performed: In a debug build on kaluga, repeatedly ran a test program which does import wifi:

import ipaddress
import ssl
import wifi
import socketpool
#import adafruit_requests

# URLs to fetch from
TEXT_URL = "http://wifitest.adafruit.com/testwifi/index.html"
JSON_QUOTES_URL = "https://www.adafruit.com/api/quotes.php"
JSON_STARS_URL = "https://api.github.com/repos/adafruit/circuitpython"

# Get wifi details and more from a secrets.py file
try:
    from secrets im...
manic glacierBOT
manic glacierBOT
#

Fast performer is this:
adafruit-circuitpython-espressif_saola_1_wrover-en_US-20201027-563a893.bin

import ecp5f;ecp5f.flash("sdbridge25f.bit",0x200000)
102400 bytes uploaded in 1701 ms (60 kB/s)
4K blocks: 25 total, 0 erased, 0 written.
True
import ecp5f;ecp5f.flash("sdbridge25f.bit",0x201000)
102400 bytes uploaded in 8098 ms (12 kB/s)
4K blocks: 25 total, 24 erased, 24 written.
True

This one is 2-3x slower:
adafruit-circuitpython-espressif_saola_1_wrover-en_US-20201113-8...

timber mango
#

Has anyone implemented e1.31 aka sACN aka artnet aka DMX over IP? Got a few matrixportals and would love to set these up as display panels for that. (Non CP solution would work too, haven't found that either)

prime cove
#

I'm working on porting the ESP WSGI to the Wiznet W5k. So far I'm able to communicate and load pages, but I'm having issue with loading larger pages. I'm seeing issues with pages 2047 bytes and longer where I either lose large portions of data or get erroneous data prepended. It smells a lot like an allocation/reuse problem with that 2047 number, but I'm this might ring a bell for someone here about what the root of the problem is.

manic glacierBOT
#

@tannewt the SHA-1 "theory" is something that I reviewed, but made a mistake by not looking at the same detail for the Root CA. Thank you for pointing this out. I'd like to suggest to make a parameter available that hands the option to the user to not verify the certificate. I say that not because I don't want to fix the original issue, but often in "homelab" you'll have self-signed certificates that otherwise will create an almost "impossible to fix" entry-level-barrier to new users - unless...

prime cove
#

Ah nevermind, just figured it out. For anyone curious it was that the chunk size in the "SimpleWSGIApplication" class was too large (8kB). I forgot the W5K sockets are defined as 2kB.

prime flower
#

@prime cove did you end up needing to add a server class to the W5k module?

prime cove
#

I've mostly just re-used the esp32spi WSGIServer class. I haven't had to do too much new with the W5K, just set a socket to listen.

#

There's definitely changes in the wsgiserver file I've made, though it might have more with me still learning about using sockets. Might be a case of it works in this situation, but isn't the smart or reliable way of doing it.

manic glacierBOT
#

Those examples are run in succession one after another.
My concern is that this project works fast enough

https://github.com/emard/esp32ecp5/tree/master/circuitpython
it turns on and off SPI to make it a JTAG, this is performance
that I need fast. Not just SPI alone, this runs great.

Above mentioned run is done one after another,
and it is considered fast 60KB/s when reading/verifying,
19KB/s when writing flash.

Latest circuitpython perform slow, about 20KB/s reading/verifying
and 6KB/s wr...

manic glacierBOT
#
diff --git a/include/mbedtls/config.h b/include/mbedtls/config.h
index f7e55aef5..aa8a28aeb 100644
--- a/include/mbedtls/config.h
+++ b/include/mbedtls/config.h
@@ -3319,7 +3319,7 @@
  *            on it, and considering stronger message digests instead.
  *
  */
-// #define MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_CERTIFICATES
+#define MBEDTLS_TLS_DEFAULT_ALLOW_SHA1_IN_CERTIFICATES
 
 /**
  * Allow SHA-1 in the default TLS configuration for TLS 1.2 handshake

Indeed, this ch...

tidal kiln
slender iron
#

@onyx hinge are you looking into the same issue I have been?

#

we should sync up

tidal kiln
#

@slender iron would like to chat with you at some point about displayio stuff if possible. totally not urgent. just related to updating the guide.

slender iron
#

k, I can now. just need to close the door

tidal kiln
#

k, and I need to like get a mic and stuff....

slender iron
#

kk

tidal kiln
#

looks like mic only right now - i'm using browser

slender iron
#

np

tidal kiln
#

want to jump into a voice channel?

slender iron
#

I'm in amelia

#

(voice channel)

supple gale
#

It supports e1.31 using an esp8266.

slender iron
#

@onyx hinge the outstanding question I have is why nina-fw is ok with io

#

it doesn't have SHA1 enabled as far as I can tell

onyx hinge
#

does nina-fw also use mbedtls?

slender iron
#

yup

onyx hinge
#

wildly different esp-idf version?

slender iron
#

3.3.1

#

it uses mbedtls directly while we use it in cp via esp-tls

onyx hinge
#
    mbedtls_x509_crt_init(&_caCrt);```
#

this is the "right" way to do certificates

#

it's not what esp-idf does, at least in the one in circuitpython

slender iron
#

what is wrong about esp-tls?

lone axle
#

@tidal kiln I'll be tied up still for a while today. But I'll take a look later on tonight, thanks for working on that!

tidal kiln
#

@lone axle no worries. whenever you get a chance is fine. thanks!

onyx hinge
#

It calls mbedtls_x509_crt_init(&s_dummy_crt); instead (components/mbedtls/esp_crt_bundle/esp_crt_bundle.c)

#
 * cacert_ptr passes non-NULL check during handshake */
static mbedtls_x509_crt s_dummy_crt;
#

and then certificates are "verified" in esp_crt_verify_callback which ends up having slightly different semantics

slender iron
#

there are 5 calls to mbedtls_x509_crt_init in ports/esp32s2/esp-idf/components/esp-tls/esp_tls_mbedtls.c

#

I assume those are the ones we're actually hitting

onyx hinge
#

specifically, if the website sends a chain A->B->C, B is in the CA Cert, and C uses SHA1 then mbedtls will stop at B and doesn't care about C. But if B is NOT in the CA Cert then it continues on to C.

slender iron
#

right

#

I think I have it configured to use the same roots certs as nina but still have the same issue

#

the firefox certs I think

onyx hinge
#

I meant mbedtls_ssl_conf_ca_chain

manic glacierBOT
onyx hinge
#

@slender iron I'm looking at esp-x509-crt-bundle because on desktop systems mbedtls gets the "B" cert in the chain as being trusted and on esp32 no cert in any chain gets "trusted" within x509_crt_verify_chain

slender iron
#

can we voice or video about this?

#

I'm not seeing the connection between x509_crt_verify_chain and crt-bundle

manic glacierBOT
onyx hinge
#

@slender iron sure jas

analog bridge
#

@slender iron Should I ditch NVS for the NVM support on s2 ?

#

or should I modify it to not use start_index for key values ?

#

@onyx hinge I pulled your audioout-esp32 branch today....

#

I wanted to test built-in dac control using i2s but it doesn't seem to be supported on the s2.

#

will be doing further testing tomorrow...

onyx hinge
#

@analog bridge yeah I started with "proper" i2s

onyx hinge
#

@slender iron the esp-idf internal format for certificates is different than both DER and PEM, too

#

more compact (substantially, I think)

#
$1 = 312``` plus the actual content like subject name and so forth
manic glacierBOT
#

I am now working on this and revising the API toward the revised example above. I am making some changes, and I have some suggested changes that I would welcome comments on:

  1. I renamed sleepio to just sleep, because an alarm is not necessarily pin-based. We have a lot of *io modules, but not all are (e.g. rtc).
  2. sleep.reset_reason and sleep.last_wake require that the module dictionary be in RAM rather than flash, since their values change. We don't do that much: I think t...
onyx hinge
hearty tapir
#

Converts PEM and DER certificates to a custom bundle format which stores just the

subject name and public key to reduce space

The bundle will have the format: number of certificates; crt 1 subject name length; crt 1 public key length;

crt 1 subject name; crt 1 public key; crt 2...

#

This is from the python script that generates that x509 bundle while you compile/build.

onyx hinge
#

yeah

#

I don't know if that can be turned back into the form needed to do "proper" certificate validation how mbedtls would like

#

so changing the esp-idf "validate, but late" code to paper over the problem seemed more tractible

hearty tapir
onyx hinge
#

not sure what fix or workaround we should employ for now, it may need to be discussed in the weeds on monday

#

I don't think that would make a difference.

hearty tapir
#

It is 135 vs. 138 certificates. That is all

onyx hinge
#

DigiCert Global Root CA is in the ./components/mbedtls/esp_crt_bundle/cacrt_all.pem

#

the certificates being used by esp32s2 builds

#

incidentally it appears that esp32s2's ssl implementation can't notice that a root certificate is expired. maybe for the best in a hard to update iot product.

#

my brain is full, see y'all this weekend or monday 🙂

hearty tapir
#

It is not compiled in

#

I think that would be the setting, but that would require your clock to be correct. 😉

onyx hinge
#

I mean, the "custom bundle format" doesn't include the validity times of the certificate

hearty tapir
#

"The bundle needs to be sorted by subject name since binary search is used to find certificates" is from esp_crt_bundle.h

manic glacierBOT
lone axle
#

Is there a (relatively easy) way to dedicate some space as writeable by code insdead of USB? Unexpected Maker Feather S2 storage is so roomy, I'd love to dedicate a few mb of space that I can download stuff to for caching.

crimson ferry
#

Other than making a big NVM chunk (which I don't think is optimized for that kind of storage), and I don't know about easy but the IDF does have facilities for FAT or SPIFFS filesystems (I did a dropbox-like thing in Arduino on ESP32 that updated files in SPIFFS from SD).

jaunty juniper
#

I'd love to have that, a second volume that would be writable from CP, and mounted as read only on the computer, so you have the code on the regular volume, and save logs and status and whatnots to the other one

#

especially when running a server on the board for exemple (once that's a thing)

manic glacierBOT
manic glacierBOT
manic glacierBOT
meager fog
#

@lone axle hihi i fixedup the slideshow for epd if you'd like to review

lone axle
#

Nice! I will a look. Mine is scheduled to arrive today so I can test it out once the UPS fairy visits.

meager fog
#

thank u! im around some of today so if you have q's i can help

#

i wrote a bunch o examples

lone axle
#

@meager fog if hasattr(self._display, "refresh"): will return true on non-epd screens also I think? do we want to avoid refreshing on ones that don't need it?

#

if so maybe it can check auto_refresh instead

meager fog
#

@lone axle dunno i dont think so? and if so, thats fine

#

we should probably force a refresh after updating the image

solar whale
#

I've been playing with a MAgTag and metro_esp32s2 - Both work fine when I flash CircuitPython to them but neither seem to be able to run an Arduino Sketch. I can build/load the Arduino sketch with no problems, but when I press reset... nothing happens. Is it possible that loading CP does something to be Bootloader that prevents the Arduino sketch from executing?

meager fog
#

@solar whale try disabling PSRAM in arduino dropdown

solar whale
#

hmm -- disabling PSRAM did not help

meager fog
#

what ar eyou uploading, simple blink?

#

can you look at the output of the TX pin on the magtag

#

u'll need a usb-serial converter

solar whale
#

ahh - simple blink now works without PSRAM -- Yay!

#

but the "shipping demo: did not

meager fog
#

ok yay yeah, it broke a day ago...i will warn arduino is very very difficult

#

a lot of things broke

#

i really dont recommend arduino

#

especially w/o debug output watching

solar whale
#

No problem -- just wanted to make sure it was not something I did --now that blinky works -- I'm happy -- back to CP...

meager fog
#

yeah

sacred blade
#

Any tips to make adafruit_esp32spi sockets more robust ? I've upgraded the firmware to the latests version, using CPY 6.0.0-rc.2 with latest lib bundle. I'm listening on an UDP socket (to receive DMX packets), on can't get more than 30 seconds of continuous updates before "RuntimeError: Timed out waiting for SPI char". Or any way to recover from this (I'm doing a reset + reconnect but it's very slow ;-)) ?

solar whale
#

I really liked the "countdown" demo for the MAGTAG!

sacred blade
#

I had the same kind of errors when using the wsgi server...

meager fog
#

@sacred blade we hvaen't done a ton of UDP with esp32spi - TCP is nice and solid

#

we also did a lot of refactoring. if you have a good repeatable example, you can submit an issue - we tend to focus on TCP/SSL client work

#

if you have PR's we're always looking for help

sacred blade
#

@meager fog Ok, i'll check if the wsgi errors have been fixed with the latests upgrade, and submit an issue if not... Regarding PR's, there is https://github.com/adafruit/Adafruit_CircuitPython_ESP32SPI/pull/115 waiting...

meager fog
#

thank u 🙂 what example is best to test it?

sacred blade
#

I've used it on a wsgi server for an app allowing to send pictures to the matrix portal, but it should make the exemple ( wsgi_simpletest.py ) on Adafruit_CircuitPython_WSGI usable again. I'll check this after lunch.

meager fog
#

cool

#

we're doing a bunch of work on ESP32S2 which is affecting other platforms,

cobalt grail
#

I had loads of problem with disconnects and hangs when working with the MagTag. Especially file copying seems problematic. Not sure how to proceed to gather info for a bug report though.

#

Totally unrelated to that; I am also unable to get the e-Ink Gizmo Tricolor to display anything in CircuitPython (it works just fine in Arduino). Not sure how to proceed.

meager fog
#

@cobalt grail try the very very latest version of the magtag build

manic glacierBOT
meager fog
solar whale
#

hmmm -- with that build I am getting an error ```ress any key to enter the REPL. Use CTRL-D to reload.
Adafruit CircuitPython 6.0.0-rc.2-261-gc3645f19f on 2020-11-14; MagTag with ESP32S2

import cheer
Set background to 16777215
Displaying color
Connecting to AP Needell Airport

Retrieving data...Reply is OK!
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "cheer.py", line 47, in <module>
File "cheer.py", line 39, in <module>
File "adafruit_magtag/magtag.py", line 333, in fetch
File "adafruit_magtag/network.py", line 510, in fetch_data
File "adafruit_magtag/network.py", line 502, in fetch_data
File "adafruit_requests.py", line 351, in json
File "adafruit_requests.py", line 347, in json
File "adafruit_requests.py", line 75, in readinto
File "adafruit_requests.py", line 223, in _readinto
AttributeError: 'bytearray' object has no attribute 'split'

#

has there been a very recent change to requests? I have todays bundle version.

meager fog
#

looks like it is something recent

#

@solar whale you will need the build i posted to connect to thingspeak

solar whale
#

Yes -- that is the one I am using.

cobalt grail
#

@meager fog Ok, now running Adafruit CircuitPython 6.0.0-rc.2-264-gf2e911ad9 on 2020-11-14; MagTag with ESP32S2 and the file copy hangs seems to have disappeared. However, if I press Ctrl-C after my code has run for a couple of seconds and then press Enter, it takes maybe 0,5 seconds, the cursor moves down and then tha MagTag is hung. No response from serial and the UF2 disk is dead.

solar whale
#

OK -- I have to go out for a bit -- will try older requests later - Thanks!

meager fog
#

@cobalt grail huh nifty yeah it is making it upset, i wonder why

#

its something with the size of code.py

#

oh wait no my disk was just full lol

#

ill check later - please see ifyou can try out any of the examples here https://github.com/adafruit/Adafruit_CircuitPython_MagTag/tree/main/examples and here under "MagTag_" https://github.com/adafruit/Adafruit_Learning_System_Guides

tulip sleet
solar whale
#

@meager fog Yay! CheerLights works with the older Request library!!

manic glacierBOT
cobalt grail
#
  Fil "code.py", rad 5, i <module>
  Fil "/lib/adafruit_magtag/magtag.py", rad 32, i <module>
  Fil "/lib/adafruit_magtag/network.py", rad 35, i <module>
  Fil "/lib/adafruit_magtag/wifi_module.py", rad 30, i <module>
ImportError: ingen modul med namnet 'neopixel'```
lone axle
#

@cobalt grail it looks like you need to add neopixel library into your lib folder.

meager fog
meager fog
#

this demo displays the BME680 on a magtag

#
import time
import board
from adafruit_magtag.magtag import MagTag
import adafruit_bme680
from adafruit_display_shapes.rect import Rect

magtag = MagTag()
magtag.add_text(
    text_font="Arial-Bold-12.bdf",
    text_position=(20, 64),
    line_spacing=0.85,
    text_anchor_point=(0, 0.5),
)

bme680_sensor = adafruit_bme680.Adafruit_BME680_I2C(board.I2C())

while True:
    displaytext = f'Temperature: {bme680_sensor.temperature:.1f} °C'
    displaytext += "\n"
    displaytext += f'Gas: {bme680_sensor.gas/1000:.1f} Kohms'
    displaytext += "\n"
    displaytext += f'Humidity: {bme680_sensor.humidity:.1f} %'
    displaytext += "\n"
    displaytext += f'Pressure: {bme680_sensor.pressure} hPa'
    print(displaytext)
    magtag.set_text(displaytext)

    time.sleep(5)
#

it is a little flaky and needed a hardware reset, i wonder if its the i2c peripheral, we havent done a lot with it

onyx hinge
#

@tulip sleet thanks, signed it

#

(sigh I didn't push that when I created the fix and a release of requests went out with the bug in)

blissful pollen
#

@onyx hinge I can look at it, not 100% sure how quickly I can test it haven't followed this one

blissful pollen
#

@meager fog I tried your demo on the BME280 seems to be going fine by I2C . I was having some flakiness having to reboot to save, and losing my serial connection

meager fog
#

all my demos without i2c never had this flakiness

#

so i am a little suspicious

blissful pollen
#

As soon as I call the line:
bme280_sensor = adafruit_bme280.Adafruit_BME280_I2C(board.I2C())

The flakiness begins, locking up Mu and my MagTag until I reset. I then have a small window to save a change / Ctrl-C before that line is ran.

If I comment out the I2C sensor nothing acts strangely

cobalt grail
#

That is consistent with the problems @timber mango and I had, we both used BME's in our code.

timber mango
#

yep

#

I have a bmp280 and a magtag and can help test new builds etc. as needed, the stemma connector makes it oh so easy 🙂

#

The same code is more stable on the Feather S2, but I haven't pushed the S2 very hard

meager fog
#

@blissful pollen yah probably some DMA weirdness with I2C. we will look next week

#

SPI had a 'similar' issue - but was fixed to get eink working nicely

#

not sure what to suggest except either live with hard-resetting (and keep lotsa backups!) or wait a bit

blissful pollen
#

Yup no problem, I was just testing it to see if I could replicate what others were seeing. Feel free to ping me to do a retest later. Sadly not set up with enough h/w debugging stuff to really dig into this

onyx hinge
#

for hw debugging on the esp32s2 I've had best luck with the Kaluga -- after I set the dip switches to allow debugging 🙂

#

(no additional HW required, it builds the debugger onto the PCB)

#

gdb is temperamental and/or there are some tricks I haven't learned yet

blissful pollen
#

Oh nice. I haven't had to touch gdb since university so... yeah a while ago 🙂 but that sounds how I remember it

manic glacierBOT
#

i want to piggy back on this because i think i2c in general is causing issues. ive had no problems with USB until i started trying accessing the I2C peripheral. then getting hangs, disconnects, erased drive etc :(

once code runs, i2c is working fine...it just struggles to get there

on a magtag (built in i2c accel)

import time
import board
import digitalio
import busio
import adafruit_lis3dh

i2c = busio.I2C(board.SCL, board.SDA)
lis3dh = adafruit_lis3dh.LIS3DH_I2C(i2c, ad...
lone axle
#

@meager fog "single minute" times get formatted without a leading 0 currenting in the simple clock. I can take a look into it and PR a fix.

meager fog
#

@lone axle yeah i just found that out

#

i fixed it

lone axle
#

What are the things that could cause the docs badge in the readme to show "docs failed" but the sphinx build runs fine locally and the actions have passed?

onyx hinge
#

if that doesn't help we can look at it together (but maybe not tonight, I'm about to call it quits)

#

what repo is it?

lone axle
#

Thank you 🙂 I'll take a look at that for the library I found.

onyx hinge
#

I wonder if adabot could add a check for this...

lone axle
manic glacierBOT
charred burrow
manic glacierBOT
cobalt grail
#

So I am trying to run MagTag examples in the Adafruit_Learning_System_Guides-master repo. from adafruit_magtag.magtag import MagTag just gives me an error about a missing module 'neopixel'. Where is that module supposed to come from? I am on Adafruit CircuitPython 6.0.0-rc.2-264-gf2e911ad9 on 2020-11-14; MagTag with ESP32S2.

lone axle
#

@cobalt grail it's in the library bundle

cobalt grail
#

Named what?

blissful pollen
#

Get the 6.x bundle

lone axle
#

neopixel.mpy

#

if your systems sorts alphabetically by default then it will be near the very bottom because it doesn't have adafruit in front.

cobalt grail
#

Argh.

#

Thanks @lone axle! Somehow my brain thought that the bundle only contained libraries named Adafruit_*.... 🙂

lone axle
#

No worries. Ive definitely lost myself looking for that one and simpleio in the wrong section before.

manic glacierBOT
blissful pollen
#

I was playing more with the I2C / MagTag issue. Found that I can run the code from the REPL with no issues. Stop it, restart it, it is fine.
It only seems to occur after dropping to the REPL after the program ends (or I Ctrl-C) - but not 100% consistently but usually

cobalt grail
#

OK, made a pull request for the MagTag_CountdownCelebration example. This is my first pull request so I hope I didn't screw up. 🙂

manic glacierBOT
#

I discovered the issue seems to occur once my program ends or aborts with Ctrl-C. The program will execute fine as long as it does not reach the REPL.

I was testing with:

import time
import board
import adafruit_bme280

time.sleep(5)

bme280_sensor = adafruit_bme280.Adafruit_BME280_I2C(board.I2C())

while True:
    print(bme280_sensor.temperature)
    print(bme280_sensor.humidity)
    time.sleep(5)

I also tested removing the while and letting it drop to the REPL....

manic glacierBOT
#

Using this script:

import time
import board
from digitalio import DigitalInOut, Direction, Pull
from gamepad import GamePad

print("wait before anything")
time.sleep(5)

btn_a = DigitalInOut(board.BUTTON_A)
btn_b = DigitalInOut(board.BUTTON_B)

# um feather s2 with OLED featherwing
# btn_a = DigitalInOut(board.IO33)
# btn_b = DigitalInOut(board.IO38)

_buttons = GamePad(
    btn_a,
    btn_b,
)
while True:
    print("{} - {}".format(btn_a.value, btn_b.value))
...
manic glacierBOT
manic glacierBOT
#

This allows calls to allocate_memory() while the VM is running, it will then allocate from the GC heap (unless there is a suitable hole among the supervisor allocations), and when the VM exits and the GC heap is freed, the allocation will be moved to the bottom of the former GC heap and transformed into a proper supervisor allocation. Existing movable allocations will also be moved to defragment the supervisor heap and ensure that the next VM run gets as much memory as possible for the GC h...

#

As discussed in #1084, when a VM run ends with an exception, this uses the movable allocation system to preserve the traceback across a soft reload and lets the next VM run retrieve it using supervisor.get_previous_traceback().

Only the last commit is relevant, the next to last is #3454 (which it is not dependent on and could be rebased off if desired) and the rest is #3695 (which is required).

Open questions from my point of view:

  • Should this be optional, or is the added weight ...
hearty tapir
#

@onyx hinge I can confirm that https://io.adafruit.com can give status_code 200, but I have an unhandled exception a few seconds later with a backtrace. Do you see the same? I've (hopefully - I'm more struggling through git than handling it) fetched your two pull requests into a fork that has a branch "esptlstest" in which I "git merge" the two pull requests for 3691 and 3689

#

I'll copy over the backtrace to my build environment now to review where is is failing.

onyx hinge
#

the module for adafruit_io needs work before it'll work with esp32s2.

hearty tapir
#

This was just the page that I did a req.get() for. I didn't use adafruit_io

#

(to validate that the certificate issue is gone)

onyx hinge
#

ok, if you are talking about C crashes then obviously that's not supposed to happen.

hearty tapir
#

Do you have a featherS2?

onyx hinge
#

yes but I'm not going to look into anything in detail today.

hearty tapir
#

No issue, Jeff. I wish you a wonderful and hopefully relaxing day 🙂

onyx hinge
#

thanks

hearty tapir
#

I've moved my firmware file to the above mentioned folder, if you want to give it a try in the coming days. The folder is shared for some days before the share expires.

timber mango
#

not sure what to suggest except either live with hard-resetting (and keep lotsa backups!) or wait a bit
@meager fog yep- I just want to make sure you and the team is getting helpful info, it looks like it can be reproduced by just importing the library. Tons of good stuff on the magtag, I am happy to have one to tinker with

manic glacierBOT
manic glacierBOT
#

Using firmware version 1.7.1 and CircuitPython 6.0.0 rc2 I'm not able to soft reboot via esp.reset(). Example code is shown below. It's as if esp.reset() simply acts as a no-op.

I am occasionally getting an 'ESP not responding' error which I'm trying to consistently reproduce. But in the meantime I'm not able to recover from the error by forcing a reset.

from adafruit_esp32spi import adafruit_esp32spi
import digitalio
import busio
import board

esp32_ready = digitalio.Digit...
manic glacierBOT
#

The behaviour that an Access Point is seen early during bring-up is also mentioned in #3321 by @anecdata
@tannewt would be happy if you could review.

The below was the output before this (with DEBUG=1)
I (3996) wifi_init: WiFi RX IRAM OP enabled
I (4116) phy: phy_version: 603, 72dfd77, Jul 7 2020, 19:57:05, 0, 2
I (4116) wifi:enable tsf
I (4116) wifi:mode : softAP (7c:df:a1:03:b7:a5)
I (4116) wifi:Total power save buffer number: 8
I (4126) wifi:Init max length of beacon: 752/...

manic glacierBOT
#

In this code the OnDiskBitmap gets added to the group after a Bitmap, so it should get drawn on top.

import time
import board
import displayio
import adafruit_imageload

display = board.DISPLAY
time.sleep(5)

splash = displayio.Group(max_size=20)
# background

rect = displayio.Bitmap(20,20, 2)
rect_palette = displayio.Palette(3)
rect_palette[0] = 0xFFFFFF
# Create a TileGrid using the Bitmap and Palette
rect_tile_grid = displayio.TileGrid(rect, pixel_shader=rect_pal...
manic glacierBOT
fathom trellis
#

Hey folks -- I just wanted to share that the CFP for PyCascades 2021 closes in a few hours. Scott gave an awesome talk about CircuitPython last year, and we'd love to see more submissions around hardware & CircuitPython. https://twitter.com/pycascades/status/1328183206428991490

Oh hey, time flies! Our CFP closes very soon but there's still time to submit!

Get yours in by the end of today, November 15th, anywhere on earth: https://t.co/qQYQd1WpFw

Submit here: https://t.co/0aPwwwCfPS

manic glacierBOT
manic glacierBOT
manic glacierBOT
manic glacierBOT
analog bridge
#

@tulip sleet Have you pushed your work on deep sleep api yet? I would like to take look at the new api.

ionic elk
#

I have a github issue that's starting to get really frustrating - how do you associate a commit with a release number? I'm trying to figure out what IDF release we're currently using in Circuitpython and it's baffling to me that it's this hard

idle owl
#

@ionic elk Can you clarify what you mean by associate a commit with a release number?

ionic elk
#

So, in Circuitpython, we have a version of the ESP-IDF checked out at 8bc19ba. I need to know the lowest semantic version number of the IDF that this is associated with

#

ie, is it 3.2, 3.4, 4.2, etc

idle owl
#

Oh hmm. Short of scanning the Releases page on GitHub, I'm not certain how to do that.

ionic elk
#

Right, and that seems so crazy to me, what is even the point of semantic versioning if you can't figure out where you are

idle owl
#

It's not directly associated with a release if my searching says anything.

ionic elk
#

sorry for being grumpy lol I've just been trying to line up where the Arduino ESP-API is to the Circuitpython one for like half an hour and I'm getting really frustrated

idle owl
#

There must be a way in git.

#

Because when you pull, it gets version numbers? So maybe it associates things?

#

Seems like we grabbed a commit between releases, so you're ending up having to dig.

ionic elk
#

If I grabbed a commit that was literally a release, would it even show that though?

#

without me having to look it up?

idle owl
#

You could at least get the date of the commit, right?

#

Then look at the release dates?

tulip sleet
#

@analog bridge I pushed something but just for backup purposes: it's WIP: https://github.com/dhalbert/circuitpython/tree/sleep. It's basically what's in https://github.com/adafruit/circuitpython/issues/2796#issuecomment-694456615, which Scott and I rewrote during a conversation. But I have renamed sleepio to sleep, and I have some thoughts about more API changes in https://github.com/adafruit/circuitpython/issues/2796#issuecomment-727047121. Also I'm changing sleep.set_alarms() to sleep.restart_on_alarm() to make it clearer that those are deep-sleep alarms.

GitHub

After we have #2795 we'll have the mechanic for waking on a variety of sources. We should add the ability to set what alarms should cause a reload when the user code is finished. This funct...

ionic elk
#

That's true. Is there a way to condense the release page so that I only see the release dates and not all the other stuff?

idle owl
#

Not that I'm aware of and they have a LOT of release notes.

ionic elk
#

Though I think at the heart that's still an approach that could be prone to errors if the commit is on a branch that wasn't merged into the next release

idle owl
#

Right.

ionic elk
#

This feels like something I should build a script for. Which again kind of makes me mad because it's like why are we even bothering to semantically version things

idle owl
#

For the user experience, I suppose.

ionic elk
#

at least on the git level

#

for users I get it

idle owl
#

That link says it was merged into master so if the following release came from master, it's in there.

#

If that was your concern.

tulip sleet
idle owl
#

@ionic elk Came after the commit.

tulip sleet
#

I have only been making shared-binding changes so far, no impl changes

prime cove
#

@ionic elk "git describe --tags" from a command line should give you the sematic version of whatever you have in the folder

idle owl
#

@prime cove That's what I was wondering!

#

Since they show up when you pull, I imagined git must have access.

ionic elk
#

@idle owl yeah maybe, I have it in my notes that it was 3.4, but I was confused because the 4.2 release is where they describe having "added the esp32s2"

tulip sleet
#

the tags on a commit are noted in git log, but I think you know that

ionic elk
#

how did you find it so fast?

analog bridge
#

@tulip sleet 👍 ..... I will be working on ulp and touch based alarms this week, also I feel like the existing esp32s2 alarms need to be changed to get inline with new api.

idle owl
#

@ionic elk I'm a ninja at searching, I guess?

ionic elk
#

@tulip sleet no I don't know, how do you git log a specific commit for that information?

tulip sleet
#

@analog bridge Yes, I am going to rewrite the alarm modules and put them in a single module, either standalone as alarm, with alarm.pin and alarm.time, or under sleep.

ionic elk
#

git show does not show tags

analog bridge
#

nice! will be looking out for these changes 🙂

ionic elk
#

and neither does git log 8bc19ba

onyx hinge
#
v4.3-dev-1198-gd06744f5e
#

This says that the tag v4.3-dev is in the past of the HEAD commit by 1198 commits

ionic elk
#

^ EYY there it is, thanks @onyx hinge I've been trying to google that command for like 40m

onyx hinge
#

If you use the gitk ui for browsing commit history, it shows a line that says "Follows: v4.3-dev" but it doesn't give the other info that describe can give

tulip sleet
#

I just mean looking backwards in git log to find a commit with a tag

#

but since we are working on the bleeding edge, there's no recent tag, so we can't document which release we're on, we're just on a branch at a particular commits

onyx hinge
#

"git describe" uses heuristics to decide which tag to use. One thing that can foil the heuristics is when a "merge up" style of development is followed, because (say) both 6.0.1 and 6.1.0-alpha.0 can be in the DAG of history, with neither definitively "in front of" the other.

   If multiple tags were found during the walk then the tag which has the
   fewest commits different from the input commit-ish will be selected and
   output. Here fewest commits different is defined as the number of
   commits which would be shown by git log tag..input will be the smallest
   number of commits possible.

In those cases, specifying first-parent probably better reflects intent: git describe --tags --first-parent HEAD

#

(because if good git practice is followed the 6.0.1 tag should be behind the second parent of some merge commit but the 6.1-alpha tag should be behind first-parents)

idle owl
#

@onyx hinge and @tulip sleet are git gurus. Top of a mountain and all.

opal crystal
#

Also, to search in the other direction (“Which releases contain this commit?”), use git tag --contains a049e02.

solar whale
#

So now git requires "good parenting skills" 😉

tulip sleet
#

@onyx hinge knows more details than me 🙂

ionic elk
#

All good tips here thanks!

#

I sure feel like Github should do more of this for you, but I guess it's specific enough that I shouldn't have those kinds of expectations.

tulip sleet
#

raw git is fairly "policy-free", so assumptions about how you manage your branches, tags, etc. are not necessarily built in.

idle owl
gilded cradle
#

It should be 3 different lines. Computer has to boot up first. Accidentally shut it down instead of the Raspberry Pi.

idle owl
#

@gilded cradle Hah! Fair enough.

tidal kiln
#

@gilded cradle typed shutdown in the wrong terminal? i've down that too 🙂

gilded cradle
#

Right terminal, but I had already rebooted the Pi and it logged me out 🙂

#

Problem was I was juggling a bunch of things and forgot where I was.

tidal kiln
#

yep. same. and realized it as soon as hitting enter.

gilded cradle
#

🙂

turbid radish
#

?serverinfo

digital shoreBOT
#
adafruit
Owner

adafruit#3230

Region

us-west

Channel Categories

8

Text Channels

56

Voice Channels

6

Members

25798

Roles

35

hazy plover
#

@idle owl I have been using the Neopixel library and everything works great. However, I'd like to put the comet animation in a loop an change the color each time through. How to do that is not obvious. Can you offer some guidance?

idle owl
#

@hazy plover It might be possible, but I'm not certain how to off the top of my head. This question is better suited to #help-with-circuitpython, I think. There are many folks that can possibly provide assistance with it. I don't have an opportunity to look into it right now, unfortunately.

#

@hazy plover Specify that you're using the LED Animation library. It works with NeoPixel, but it's a separate library. Simply a suggestion to be clearer and get some better assistance.

ionic elk
#

Does anyone know how to get google docs to not autoreplace names following a @ with contact links?

solar whale
#

I just click on the line below -- don't hit return

#

so type in @jerryn then click on the page somewhere else

idle owl
#

I hit escape to cancel it.

#

Don't see anything obvious to disable it.

solar whale
#

ooh -- go to know

ionic elk
#

yeah but they only just added it in, right? I don't remember having to do it before just a couple weeks ago

idle owl
#

@ionic elk Correct.

ionic elk
#

bah

#

yeah I wish they'd put a category in tools->preferences for it, like the other substitutions

solar whale
#

it is annoying

tulip sleet
#

I hit escape to cancel it.
@idle owl i have been using ctrl-Z, and then retyping, and it doesn't do it the second time, but that's easier

modern wing
#

Good afternoon all you wonderful folks -- happily lurking, notes doc updated to reflect as such.

onyx hinge
#

<@&356864093652516868> if you're planning to speak in the meeting, please remember to at least add your name in the notes doc (two places) so we don't skip over you. If you can also add your notes, that's helpful too. https://docs.google.com/document/d/1NB-7IQR3F-1zPFHavBUUrmbg8uErFVLULn5Z59d6tPo/edit?usp=sharing

#

If you're not in the doc we'll assume you're lurking

thorny jay
#

Lurking

tidal kiln
#

lurking

idle owl
#

@tulip sleet @ionic elk If you keep typing after it, it doesn't automatically link it apparently. I accidentally just did that and it doesn't appear to have linked it.

neat folio
#

lurking

manic glacierBOT
#

example for magtag of reading 'large' json files and parsing them

code.py output:
Connecting to AP adafruit
Reading data
Took 1.380859 seconds to get response
Took 40.878906 seconds to parse
Thoughts 5
import time
import random
from adafruit_magtag.magtag import MagTag

# Set up where we'll be fetching data from
DATA_SOURCE = "https://www.reddit.com/r/Showerthoughts/top.json?limit=5"

magtag = MagTag()
magtag.network.connect()

# thought in bold text, wit...
modern wing
#

Likewise 🙂

manic glacierBOT
ionic elk
#

@idle owl unfortunately it holds on for one space after, so when you want to put in your name for your section it'll still trigger

trim elm
#

lurking

old smelt
#

Lurking

lone axle
onyx hinge
#

❤️ me some LCARS

lone axle
onyx hinge
#

superpower: lives in the pacific timezone

solar whale
#

👍

onyx hinge
#

The microbit python is based on micropython @balmy stirrup ?

slender iron
#

yup, it's a fork of micropython

lapis hemlock
#

@balmy stirrup can you post links?

slender iron
onyx hinge
#

Thanks @slender iron

blissful pollen
#

yeah i am

slender iron
#

I think that's right

balmy stirrup
#

@narrow dirge yes. I am working with Carlos who has their own port right now and will be getting the port into the main MicroPython repo at some time in the future.

@lapis hemlock
https://github.com/mytechnotalent/MicroPython-micro-bit_Create_C_Library
https://github.com/mytechnotalent/MicroPython-micro-bit_Create_Python_Module

lapis hemlock
#

@balmy stirrup Thanks!

balmy stirrup
#

Welcome

onyx hinge
#

@balmy stirrup if you didn't, consider sending anne the link for the micropython one

balmy stirrup
#

@onyx hinge yep I tagged her on the Twitter posts.

onyx hinge
#

@slender iron stream Thursday right?

slender iron
#

yup!

onyx hinge
#

@lapis hemlock did you benchmark function pointers yet?

lapis hemlock
#

@onyx hinge No, but it is high on my list.

#

Function pointers are configurable (if you don't want them, you can switch them off, and revert to macros).

onyx hinge
#

@lapis hemlock my suspicion is if it's anything that would be a function call anyway (sin, pow) you wouldn't see a speed difference, but I could always be wrong.

lone axle
#

Belated hug to Dan, I was one of those Win7 users looking for drivers for new boards 😅 .

lapis hemlock
#

@onyx hinge you still have an extra function call, albeit, a simple one.

lone axle
#

I have finally made the leap to Linux now.

lapis hemlock
#

@onyx hinge Something like this: mp_float_t ndarray_get_float_int16(void *data) { // Returns a float value from an int16_t type return (mp_float_t)(*(int16_t *)data); }

lapis hemlock
#

@lapis hemlock my suspicion is if it's anything that would be a function call anyway (sin, pow) you wouldn't see a speed difference, but I could always be wrong.
@onyx hinge It could also be the case that your implementation is cleverer than mine, and you can circumvent the function dispatch. Here is an example: https://github.com/v923z/micropython-ulab/blob/26173a46f0420d4e129d2cc7d37df4f6c63af78f/code/vector/vectorise.c#L47-L88

onyx hinge
#

yay thank you dan!

slender iron
#

blinka 🎉

onyx hinge
#

The first thing to do is put it under FULL_BUILD only. but when it comes to making things in a module optional (rather than making a whole module optional) it becomes more complicated.

modern wing
#

Thanks for another excellent meeting

analog bridge
#

Thanks!

onyx hinge
#

thanks kattni, and everyone! see you next week.

lapis hemlock
#

Cheers!

gilded cradle
#

thanks

balmy stirrup
#

Thanks all!

modern wing
#

🤞

onyx hinge
#

huh debian's still back at version8 for gcc-arm-none-eabi, even in sid

modern wing
#

I expect to see a 14-16tb external HDD in the $150usd range this black friday.

turbid radish
#

ooo, nice

solar whale
#

Have a great week, all! Dog is pacing...👋

idle owl
#

@solar whale Later, Jerry!

#

I'm going to drop off, the video is taking forever to transcode. 😄

manic glacierBOT
idle owl
#

@tulip sleet For sure 6.0.0 will be stable today? Updating v numbers in the newsletter, and want it to be accurate tomorrow.

tulip sleet
#

I am writing up the release notes! Yup!

idle owl
#

@tulip sleet Do you think you'll have the 6.1.0-alpha/beta.0 out today as well?

#

Great!

tulip sleet
#

that is more up to @slender iron, about whether there's anything pending he still wants to merge in.

idle owl
#

Alright. I'll say we don't have an unstable version at the moment for now.

tulip sleet
#

@slender iron is this a correct description of the current state of the native network modules: - Revamped network API, adding wifi, socketpool, ssl, and other modules. Disabled socket, wiznet5k and network modules. They will be removed in 7.x in favor of networking libraries.

slender iron
#

@tulip sleet yup!

tulip sleet
#

thanks!

slender iron
#

let's plan on a pre-release this week but not today

#

I'm still not caught up

#

@idle owl ☝️

tulip sleet
#

sounds fine; there will be a lot to write up

idle owl
#

@slender iron Perfect, that's how I went with it.

#

Removed that bit entirely, like we did when Python didn't have a pre-release out.

slender iron
#

perfect. thanks!

#

🌮

idle owl
#

Here is the notes document for 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/1uWRr_OQkfK9TygD2SGU9LpY60mK_euMQNsT0P-J0o2I/edit

manic glacierBOT
#
[adafruit/circuitpython] New tag created: 6\.0\.0
orchid basinBOT
manic glacierBOT
idle owl
#

@lone axle Are you around?

lone axle
#

@idle owl yep whats up?

idle owl
#

In lazy mode - do you happen to have the /lib list for using PyBadger with MagTag?

lone axle
#

adafruit_imageload, adafruit_display_text, neopixel, that may be it for now.

idle owl
#

Excellent, thank you so much

lone axle
#

ah and adafruit_display_shapes

#

adafruit_bitmap_font also

idle owl
#

@lone axle Thanks so much for adding support for MagTag to PyBadger! Once we get lower power working, we'll make sure to update the example to use it.

lone axle
#

I'll circle back around and work on the audio functions as well once it's implemented in the core.

idle owl
#

Excellent!

tulip sleet
onyx hinge
#

@tulip sleet that's good news, except for whatever it breaks 🙂

tulip sleet
#

python is bumped to 3.8, but we usually specify anway. I think the only thing that might affect us is

tulip sleet
#

but our use of AWS CLI is pretty simple

#

Starts Nov 30, will be over weeks.

onyx hinge
#

I guess a PR won't test the aws bits

tulip sleet
#

No Python2 by default

lone sandalBOT
orchid basinBOT
manic glacierBOT
#

I am now working on this and revising the API toward the revised example above. I am making some changes, and I have some suggested changes that I would welcome comments on:

Thanks for picking this work up! I'm excited to try it.

1. I renamed `sleepio` to just `sleep`, because an alarm is not necessarily pin-based. We have a lot of `*io` modules, but not all are (e.g. `rtc`).

I worry that just sleep will conflict with time.sleep. lowpower is an option too. I don't mind ha...

idle owl
#

@tidal kiln Oh, I forgot to ping you earlier. Let me know if you're around. If you're not in the next half hour or so, tomorrow will work better.

tidal kiln
#

yo!

idle owl
#

Hey!

idle owl
#

@tidal kiln So I'm writing this Which CP Board is Right for You? guide. Limor wants you to take a look at it and fill it out better because you deal with support and know what questions might be better answered by the guide. I can try to add you to it in Basecamp or whatever works for you. Three of the pages are already done, there are... checks... three more pages incoming including the one I'm on now. So you would be able to get started whenever works for you.

tidal kiln
#

okie doke. try adding me over in BC. lets see if that'll work.

manic glacierBOT
idle owl
#

Alright, already checked, looks like it's possible. I'll assign you to the same entry I'm assigned to, and then I'll make a comment on it with the currently completed pages.

tidal kiln
#

got it.

idle owl
#

Comment added.

#

The goal of the page is a few sentences about why a board might be good for you. So the text shouldn't get too long, but add or update what you think makes more sense based on the user needs.

tidal kiln
#

yep. gotcha. i'll take a look here in a few.

#

want me to edit directly? or add feedback in BC thread?