#circuitpython-dev

1 messages Β· Page 279 of 1

slender iron
#

Either way is fine I think. I haven't had to remove those allocations yet so it can't be too bad

#

we'll find out once we start using it

tulip sleet
#

yes, maybe I'll just leave it. It appears that a long-running event handler is not as problematic as one might have thought.

manic glacierBOT
manic glacierBOT
#

@tannewt Right, the more pixels, the more likely this is to be triggered (but even doing just 32 Neopixels was enough to eventually trigger the fault). During that test, I had the pixel count set to either 240 or 320 (I forget which now). I wonder why that eventually becomes an issue? This issue was happening whether or not I had adafruit_ble imported.

What further testing (and/or breakpoints or other gdb commands) can I do to provide more context?

ruby atlas
#

@slender iron thanks! glad to see it finally make it into master.

raven canopy
#

@craggy galleon the cookiecutter error has been fixed. if you run it again, make sure to answer yes to the re-download question. thanks for bringing the issue to our attention!

craggy galleon
#

Ill give it a test run shortly. Thanks heaps

idle owl
#

@gilded cradle @onyx hinge Either of you still on the clock and have a couple of minutes to review a PR?

gilded cradle
#

Sure

raven canopy
#

@craggy galleon as a peripheral affect, i'm currently looking at writing some tests for changes to our cookiecutter. this would have been easily caught.. πŸ˜„

gilded cradle
#

Which pr @idle owl ?

idle owl
#

Thanks @gilded cradle!

gilded cradle
#

yw

manic glacierBOT
manic glacierBOT
idle owl
#

@gilded cradle You can merge it - Limor already ok'd someone else reviewing it. I initially thought she wanted to, but she headed out so I verified with her before she left.

gilded cradle
#

ok

idle owl
#

Thanks so much for the super thorough review! I really appreciate it.

gilded cradle
#

You're welcome. I didn't test it, but just looked at it closely.

idle owl
#

I tested it when updating the guide because I had to do Mu screenshots of everything anyway.

gilded cradle
#

Excellent

idle owl
#

If I botched something, I'm sure we'll find out soon enough πŸ˜„

#

Thanks again!

gilded cradle
#

Yeah, easy enough to fix.

manic glacierBOT
gilded cradle
#

You're welcome!

manic glacierBOT
manic glacierBOT
craggy galleon
#

@raven canopy thank you for the fix. Works now. I also wanted to note that it puts the older versions of Python3 as supported (3.4, 3.5) rather than newer ones (3.7,3.8). Is this something that should also be updated?

manic glacierBOT
manic glacierBOT
manic glacierBOT
#

Might be able to use a single smaller static buffer - though I'm not sure if the timing would remain accurate. That said, it would be easy to test if a fixed buffer works, as DMA mode still has a wait loop. https://github.com/adafruit/circuitpython/blob/master/ports/nrf/common-hal/neopixel_write/__init__.c#L213

It isn't clear whether use of two sequences and NRF_PWM_TASK_SEQSTART1, NRF_PWM_EVENT_SEQEND1 would be helpful.

raven canopy
#

@craggy galleon i don't have a confident answer to the setup.py referencing 3.4/3.5, beyond the fact that CircuitPython (via MicroPython) is based on the 3.4 syntax. There are quite a few popular things in 3.6+ that we don't really support. Granted, Blinka users will have the newer versions available... @idle owl might have a more concrete answer.

manic glacierBOT
simple pulsar
#

I've noticed two very minor differences on the Circuit Playground Bluefruit wrt to touch pad inputs. I doubt these are CircuitPython specific but I am running 4.1.0 vs 5.0.0-beta.2. The first difference is I think the default sensitivity is a little different. It's subtle but I think the CPB takes more to register the input using a finger. This is based on comparing a single pair of boards so far... There's a few questions here, is the auto-calibration at startup working? Is there expected to be a difference with the nrf chip? Is this difference significant enough to affect (existing) projects?

simple pulsar
#

Second one is more fun. I've got the speaker active and I'm making some beeps on it. I'm also using touch pad A1 next to the AUDIO pad. If you put your finger firmly across A1 and AUDIO then it makes a curious sci-fi type noise. This is probably just some combination of the amplification of signal on A0/AUDIO being more sensitive and different approach to capacitive input between the two chips? This code can be used to demonstrates it: https://github.com/kevinjwalters/circuitpython-examples/blob/b590ddf935f10983ca7e99068ce8ad328d00db06/cpx/cpx-reaction-timer.py - press A1 whenever the first NeoPixel comes on or it beeps and try firmly "bridging" over to AUDIO pad on CPB with finger.

manic glacierBOT
cursive condor
#

hello here.

#

@slender iron is telling me to do a PR (pull request) on github ... is there a documentation to do that correctly ?

#

I usually use git to clone, and to manage my projects locally, but never to push to github or similar services

solar whale
manic glacierBOT
#

@PTS93 the latest changes to _pixelbuf were just merged into master yesterday. If you're good with building CircuitPython yourself, you can try the _pixelbuf variants of neopixel.py and adafruit_dotstar.py over at https://github.com/rhooper/Adafruit_CircuitPython_DotStar/tree/pixelbuf and https://github.com/rhooper/Adafruit_CircuitPython_NeoPixel/tree/pixelbuf

If you're using one of the new nRF boards like the Feather nRF52840 https://www.adafruit.com/product/4062 DMA is used for neopixel...

cursive condor
#

Thanks a lot !

onyx hinge
ruby atlas
#

@onyx hinge is that good? πŸ™‚

onyx hinge
#

@ruby atlas It is okay I guess. danh is concerned about things that block for 1ms and this is a lot more than that (all the time that SCK is pulsing, it's in a background task and blocking other background tasks) but on the other hand it's a lot less than 100%

#

(actually it's blocking more than that, because it also has to decode MP3, this is just showing the SD transfer time)

#

it's mostly "whee, I know how to use my o'scope" πŸ™‚

ruby atlas
#

I wouldΒ like to play with scoping more. I haven't used any modern scopes.

#

Is the concern that >1ms of background will affect the Soft Device?

#

(BTW, What the heck is the Soft Device in the NRF port?)

manic glacierBOT
onyx hinge
#

@ruby atlas Soft Device is the code from nRF that makes bluetooth work, is my understanding

ruby atlas
#

Right, but i'm wondering why it's called that πŸ™‚ I guess I should google.

#

"SoftDevice S132 is a high performance Bluetooth 5 qualified protocol stack for the nRF52810 and nRF52832 SoCs"

onyx hinge
#

I assume because it's Software that implements the bluetooth Device ? idk

ruby atlas
#

Also "The SoftDevice contains the Nordic Bluetooth code. It's a piece of firmware that is flashed in a certain area on the microcontroller. When you have flashed a SoftDevice you need to adjust your linker settings of your code. See the examples for suitable linker files."

onyx hinge
#

I just wish I knew how to disable SoftDevice when debugging via jlink

ruby atlas
#

Ha.

onyx hinge
#

you too eh?

ruby atlas
#

hmm, wonder if it's always enabled now.

#

But either way, I feel like Scott or Dan know how to avoid the SD being enabled if you don't want it while debugging something that really doesn't need it.

onyx hinge
#

seems like it is always enabled now

idle owl
#

@tulip sleet I realised too late, I should have included some kind of friendlier error in the Circuit Playground library for when importing the Bluefruit-only features on Express. I'm adding it now, I don't expect it to be included in 4.1.x, but we should include it in 5.x.

#

Also realised that if I add those errors, the code I have to update one of the examples to work with both CPB and CPX no longer works because it uses hasattr and they'll both have it now.

#

So that update will no longer work.

#

There's one thing that CPX has in dir(cp) that the CPB does not, but it's wholly unrelated to the program. Keeps the code clean though, so I guess I'll run with it and comment it instead?

raven canopy
#

could you use os.uname()?

ruby atlas
#

@idle owl what about a class property has_bluefruit on both, set to False on cpx, True on cpb? That could make example code easier to read than try/except.

idle owl
#

@raven canopy Don't want to complicate the code any more than necessary.

raven canopy
#

πŸ‘

idle owl
#

@ruby atlas Maybe? this is literally the only example that it's an issue though.

#

Anything else can be written specific to each board really easily, or has no issues working on both.

#

What I wrote works. I can comment it and it'll be fine.

ruby atlas
#
>>> os.uname()
(sysname='nrf52', nodename='nrf52', release='5.0.0', version='5.0.0-beta.0-112-g17c8356b8-dirty on 2019-12-05', machine='Adafruit Circuit Playground Bluefruit with nRF52840')```
idle owl
#

Or sys.

#

Which is how we determine which board is which in __init__

ruby atlas
#

Yeah, that's cleaner.

idle owl
#

This adds one line of code to check if the touch_A7 is available or not, and calls it Express if it is. It's pretty clean.

manic glacierBOT
timber mango
#

Hi experts, I'm trying to convert a float value from time.monotonic() into two integers which I want to transmit on IR.
How would you suggest I go about doing that?
I guess the part before the decimal are just int(x), but what about after? The number of decimals I guess, three would be nice, two can be ok if need be.

#

Ooops, wrong room, I think. Sorry πŸ™‚

crimson ferry
manic glacierBOT
#

(Not tested): What you could do is change these lines in circuitpy_mpconfig.h:

#if CIRCUITPY_DISPLAYIO
extern const struct _mp_obj_module_t displayio_module;
extern const struct _mp_obj_module_t fontio_module;
extern const struct _mp_obj_module_t terminalio_module;
#define DISPLAYIO_MODULE       { MP_OBJ_NEW_QSTR(MP_QSTR_displayio), (mp_obj_t)&displayio_module },
#define FONTIO_MODULE       { MP_OBJ_NEW_QSTR(MP_QSTR_fontio), (mp_obj_t)&fontio_module },
#define TERMINALIO_MODULE...
cursive condor
#

πŸ™‚

simple pulsar
#

@idle owl Is there some work going on with offering a single import line or cpx / cpb object that works (mostly) on both CPB and CPX?

idle owl
#

@simple pulsar from adafruit_circuitplayground import cp and it detects which board and imports properly.

lone axle
idle owl
#

@lone axle That's great! Please let me know if you need testing. I have no idea how to build it myself but if you can get me the packaged app, I'd be happy to test it.

lone axle
#

@idle owl Thank you πŸ™‚ I will definitely need some help testing on different devices. I'll include a built APK file in the repo once I put it up.

idle owl
#

Excellent.

simple pulsar
#

@idle owl Is the new cp fully compatible with code written for cpx object? Is that going out for 4.x as well as 5.x? Perhaps all these questions are answered already somewhere?

#

Is the cpb been deprecated now? I've got some CPB only code that'll probably go out in a guide in a week or two, hence my interest.

idle owl
#

The old way works as well, but we're wanting to use the cp method going forward so all code works on both. Yes, it is fully compatible. It simply checks the board and imports the module, so it's basically cpx/cpb behind the scenes. The old way isn't necessarily deprecated, as it still works. @simple pulsar

#

It's already in 4.x and 5.x.

#

That was the main reason for 4.1.2

#

These questions are not really answered anywhere, you're not missing anything. I'm updating the main guide for the library, but we're not expecting all existing guides to be updated.

#

I can update the README with this information.

simple pulsar
#

thanks

#

I'm still on 4.1.0 - I guess that's so 2019 now. πŸ˜€

solar whale
#

@idle owl do I have do do anything to my forks of library repositories with respect to the change over to github actions?

idle owl
#

@solar whale Presumably do a pull once everything is merged. I don't think there's anything you specifically need to do.

solar whale
#

Thats what I was hoping! -- Thanks

ionic elk
#

@slender iron @tulip sleet do I need to do edits to the UF2 generator for stm32 before I should expect it to start working properly? The current build process creates one, but the Meowbit bootloader doesn't even recognize it (compared to UF2s they provide for micropython).

#

I've got their emails now, so I can reach out if this is something that's more likely on their end, but I want to make sure there's nothing more I need to do first.

cursive condor
#

@idle owl : thanks for your guide about git and github. it was very nice to read and everything worked as expected (for now).

idle owl
#

You're welcome! Thank you for the feedback. Let us know if you have any further questions.

cursive condor
#

sure !

manic glacierBOT
#

This is almost done with two remaining issues.

  1. I'm still unable to get the Meowbit's built in UF2 bootloader to recognize the UF2 files generated by tools/uf2/util/uf2conv.py. Unlike the Micropython UF2 they provide from their website, which causes a reset when loaded, ours just moves to the bootloader drive and sits there without incident. Hoping to resolve this with the Meowbit team since otherwise users will need to manually solder on an...
manic glacierBOT
manic glacierBOT
#

Here's what I learned from a little grepping around in the bootloader:

Auto reset after reaching a target number of flashed blocks is in both meowbit's bootloader and the microsoft samd uf2 bootloader, but I think a bug prevents meowbit's from working.

The code is a little different, but here's the relevant block from write_block in https://github.com/microsoft/uf2-samdx1:

void write_block(uint32_t block_no, uint8_t *data, bool quiet, WriteState *state) {
...
            if (s...
#

So I got the latest master and compiled for the PyBadge but speed is exactly the same, is there anything different about how I need to call or construct anything?
import neopixel
neopixels = neopixel.NeoPixel(board.D3, 120, brightness=0.3, auto_write=False, pixel_order=neopixel.GRB)

Using the hello world code of the py badge:

        for color in range(0, 360, speed):
	    for index in range(0, NEOPIXEL_COUNT):
	        palette_index = pixels[index] + color * directi...
short phoenix
#

Just booted up my Feather M0 Express with Featherwing OLED (and I also have an adalogger) after the longest time. I am wondering if anyone has any ideas for projects involving this microcontroller and its addons?

manic glacierBOT
wind trellis
#

@short phoenix You could use some of the pins as button inputs (capacitive touch) and see what kind of game you can come up with to run on the oled.

manic glacierBOT
short phoenix
#

Okay, thanks

manic glacierBOT
#

@jepler I'm not a UF2 expert here but I do know that manually resetting out of the bootloader after flashing the Circuitpython UF2 to it does not result in it rebooting to circuitpython - rather, it boots to whatever was written before, in this case micropython. So something is happening further up the chain that is resulting in the UF2 never hitting the point where it's written to the internal flash at all. It makes it to the external flash and stops there.

manic glacierBOT
manic glacierBOT
lone axle
lone axle
#

There is a direct link to the APK in the readme file now. Anyone with an Android device and a CPB who is willing to try this out please let me know how it goes and which Android device you have tried.

quasi fjord
#

@lone axle what firmware goes with the app?

lone axle
#

I will update the readme tomorrow with that information.

quasi fjord
#

looking good on a Pixel 3a. The NeoPixel page could use a page indicator. I didn't realize there were other modes until I read the guide. And for your TODO list, the accelerometer page doesn't let you manually rotate

quasi fjord
#

Android 10 on the Pixel 3a. It also looks good on a Nexus 5X running Android 8.1.0

#

a quirk on the button status: the switch shows an update animation when I first hit either A or B

quasi fjord
#

Looking good on a Samsung Galaxy Note 4 too, Android 6.0.1

manic glacierBOT
lone axle
#

@quasi fjord Thank you πŸ™‚ I'll get those added to the todo list. If anyone here has a CPB and an iPhone and is willing to help out. A short recording of the Accelerometer module in the iOS would be most appreciated. In particular I'm trying to see the behavior of manually dragging the 3D model vs. the Accelerometer data moving it.

manic glacierBOT
solar whale
#

@lone axle just tried your app on an older ZTE android phone -- v7.1.1 -- worked great!

#

one minor issue is that "Disconnect" does not seem to work ??

lone axle
#

Hooray! Thank you. Yes that is correct I need to hook up the disconnect button in the top left corner of the modules list page. For now tapping the notification in the notification bar is the way to disconnect and shut down the bluefruit service in the background.

solar whale
#

once I am disconnected -- how do I get the App to restart and rescan?

#

it just comes back up but is not connected

lone axle
#

@solar whale Re-launching it from the home screen / app drawer should initiate a new scan I think. If not I believe there is a refresh button in the top right of the pairing activity that you can press to manually start a scan

#

Oh, I see on my end that re-launching is not working quite right

solar whale
#

ok - np -- tryin g to record iphone accel screen -- now trying to upload

lone axle
#

if you use the back button on your device you can work your way back through closing things. Once everything is closed the next time you launch it should take you to pairing screen where you can scan/connect

solar whale
#

sorry about the beginning of the recording -- is that what you needed

lone axle
#

Oooh, Thank you. Is there any way to show screen touches?

solar whale
#

I have no idea πŸ˜‰

lone axle
#

I'm trying to figure out how the interaction between manually dragging the 3D model vs. the incoming accel data moving it

#

like if you manually drag it does that override the accelerometer position for a few seconds or something?

#

and then just go back to matching the accelerometer after some time?

solar whale
#

if you manually drag it, taht seems to just provide a starting point for actually moving the CPB.

#

the accel only seems to give relative position

manic glacierBOT
solar whale
#

all the motion in the movie was from moving the CPB

lone axle
#

Ah I think I understand. Can you record one more where you drag model on the screen a bit and then move the physical device a bit?

solar whale
#

ok -- just a sec

#

first part is dragging -- left it on side view the started moving the CPB

lone axle
#

Awesome. Thank you.

#

It's like an extra adjustment that allows you to change the angle you give the board from.

solar whale
#

yes -- seems that way --

lone axle
#

The 3D Model was new territory for me so I'm not sure exactly how to implement it, but I should be able to figure it out now. Thanks again for testing on the Android device as well.

solar whale
#

You've done a great job -- so quickly -- glad to be of help.

slender iron
#

Hi all, tomorrow is our first CircuitPython Weekly of the year! It is here on Discord in the circuitpython voice chat at 11am Pacific / 2pm Eastern. Everyone is welcome to attend. More info and notes are here: https://docs.google.com/document/d/1GDZ5iwjekH8D-wLp5atE8N4eL4L6pwmDZcK6oG9YN0A/edit?usp=sharing <@&356864093652516868>

exotic pumice
#

happy new year scott

slender iron
#

you too @exotic pumice !

exotic pumice
#

πŸ˜„

slender iron
#

@heady rampart thanks for the ping! I added the CircuitPython builds for the Particle Meshes. I don't think there is much remaining work there but it's nice to have a contact. πŸ™‚

solar whale
#

sorry -- could not figure out how to get the android to do a screen capture -- took a picture with iPhone...

exotic pumice
#

volume down + power typically

solar whale
#

tried many combos -- funky phone

lone axle
#

@jerryn no worries. Picture is fine. I think i know the cause of that. Will need to tweak the available sizes of the board graphic. Do you know the resolution of your device by chance? Or the model number?

solar whale
#

ah -- got it -- just was not hitting vol down properly...

ivory yew
#

I can never figure out the SERCOM stuff on the samd51

solar whale
#

this is a ZTE N9137

ivory yew
#

I feel like I need a memory expansion to hold everything in my head to figure out which pins to use.

onyx hinge
#

@ivory yew that table in the datasheet just never helps me. there must be a better format to present the info

ivory yew
#

that table is horrific.

solar whale
#

not sure of details -- or where to find them -- I got this just to play with android apps - don't use it much

ivory yew
#

I just want a second SPI bus.

#

I guess I can use my current SPI bus and just add another CS pin.

onyx hinge
#

that seems easiest, for some definition of easiest

exotic pumice
#

the docs on atsamd-rs hal used to be good for that but we changed some things and now it's a mess

#

I guess I can get old docs

#

does that help at all?

ivory yew
#

not really

exotic pumice
#

yeah, still gotta figure out the pads and stuff

solar whale
lone axle
#

@jerryn perfect, thank you Im out and about today but once i get that tweak made, i'll get a new apk put up in the repo.

solar whale
#

no rush on my part -- thanks for all the work -- happy to help.

exotic pumice
ivory yew
#

good lord

#

I give up, I'm just gonna multiplex the one SPI bus I have. It's not a big deal.

#

less stuff to route anyway

lone axle
#

@solar whale Its a bit of a balancing act on android with all of the different screen sizes and densities. But should be able to get them covered with a good set of differently sized assets. Thanks again for the help, i really appreciate the feedback.

onyx hinge
#

Hmmn I should probably run pylint on jeplayer

solar whale
#

what a way to ruin your day πŸ˜‰

ivory yew
#

could just read the samd datasheet instead

#

same energy

crimson ferry
#

Are there timer allocation issues that the pin code above would reveal that the data sheet would not? I've been meaning to make an all-purpose version of that code for all of the major features... I2C, UART, SPI, etc

#

(Ran into trouble trying to PWM the LED on PyPortal due to lack of an available timer)

slender iron
#

@ivory yew @idle owl has a script that tries all combinations on an existing board def

ivory yew
#

problem is I don't have an existing board def

#

it's fine I figured it out, for now.

slender iron
#

you could modify it from the pins defs in microcontroller.pin

manic glacierBOT
onyx hinge
#

@solar whale overall I do think it leads to better code. (One or two rules are wrong but people disagree about which ones)

raven canopy
fierce girder
#

meeting today? (Jan 6)

solar whale
manic glacierBOT
onyx hinge
#

Your code has been rated at 0.50/10

solar whale
#

Lint needs to be more empathetic ...

#

your code has been rated 0.50/10 but I've seen worse...

onyx hinge
#

yeah this is discouraging enough that I am reconsidering whether to spend my time this way

solar whale
#

At least it was positive -- I've had negative ratings...

onyx hinge
#

o_O

solar whale
onyx hinge
#

yup, thanks!

solar whale
#

I spent most of my career as a solo programmer on embedded systems -- It has been a struggle to get used to a large opensource project like this. I appreciate the need for standards, but bristle at some fo the nit-picking. My response to lint is often "If it bothers you, then you fix it" πŸ˜‰

#

but then I go ahead and do it ...

onyx hinge
#

I am going through that a bit myself right now, but I'll try to get through it

#

some of these rules are so contrary to my personal style that it's hard to be willing to adapt

ionic elk
#

do you guys use a lint for your C code?

#

I thought that all that was basically covered by compiler warnings these days but I want to make sure I'm not missing out on anything

ivory yew
#

afaik we don't use clang-tidy or anything like that.

onyx hinge
#

@ivory yew though tannewt has looked into doing it

ivory yew
#

that's certainly possible.

onyx hinge
#

@ionic elk the compiler errors are pretty stringent for "real" problems but don't do much for "stylistic" concerns. I've been able to run clang's scan-build static analysis and it found a few interesting things but not many.

#

clang can't compile CMSIS so it's not possible to build anything but the Unix port with it

#

(I should have probably chosen different language so it doesn't sound like I'm disaparaging "stylistic" checks. They're important, because a project needs to speak with one voice as it were)

ionic elk
onyx hinge
#

I figure the open source tools incorporate the bulk of the useful warnings from proprietary tools

ionic elk
#

Having just spent some time chasing down a pointer error I'm feeling like I could use a little extra check

onyx hinge
#

but I don't know that from direct experience

manic glacierBOT
stuck elbow
onyx hinge
#

hum unexpectedly I am getting hangs when I use audiomixer .. in shared_dma_transfer!!

#

which is ??? because I believed I had fixed the hang

manic glacierBOT
onyx hinge
#

but even before it does that, it plays back "stuttery". there may just not be enough CPU power left over after spending all that time on SD card reads

#

shouldn't the M4 DAC go up to nearly +3.3V?

#

it is drive strength or something, on headphones it clips at more like 2.6v

#

I think audiomixer may have an assumption somewhere about the relationship between its own buffer size and the underlying samples' buffer sizes? A 1024-sample, 10-repetition sine wave plays fine.

manic glacierBOT
onyx hinge
#

DAC is characterized for max load of 5kOhm, actual load is 200ohm in pygamer according to schematic, probably explains clipping πŸ˜•

errant grail
#

@onyx hinge There are two 100-ohm series resistors leading to the PyGamer's amplifier after a 4.4K-ohm voltage divider, but the amp's internal impedance is 10K-ohms; shouldn't be an issue.

#

The DAC is seeing a 4.0k-ohm load caused by the voltage divider and the amp's internal resistance. That is close to the 5k max load spec as you noted.

onyx hinge
ionic elk
#

@meager fog @slender iron evaluating my priorities today as Meowbit weeds wrap up. Current shortlist is:

  1. full optimization test across all chips/peripherals
  2. address remaining busio issues like one-line SPI, etc
  3. internal filesystem improvements & better package management
  4. Add espruino wifi/pico, Discovery F405
    Anything you'd like to add/move around? Happy to help with @onyx hinge with audio DMA stuff if that's high priority, it's still on my basecamp todo.
onyx hinge
#

doesn't that create a 200 ohm load on A0?

errant grail
#

@onyx hinge Ah. That's a horse of a different color.

onyx hinge
errant grail
#

^^ Yes. I missed that on the schematic.

onyx hinge
#

np, you found 2 100-ohm resistors and I wasn't any more specific..

errant grail
onyx hinge
#

200 ohms would exceed the minimum?

errant grail
#

so they're saying that's the lowest resistance allowed, not the load. Okay.

onyx hinge
#

that's my take

orchid basinBOT
onyx hinge
#

I don't have a decade box or I could be more specific

errant grail
#

sorry about the distraction. Was confused by an earlier reference in the spec sheet that said the DAC outputs had "high-drive capabilities."

past herald
#

For what it's worth, 5kOhm is indeed on the higher side... often you'll see more like 50-100k specs in garden-variety DACs.

onyx hinge
#

@errant grail I appreciate your time, thank you!

errant grail
#

@errant grail I'm glad you're working on this. I'm starting to use the PyGamer/Badge as a quasi-universal front panel for projects and hadn't seen this limitation yet.

manic glacierBOT
#

PR #2439 does not appear to have fixed this

Adafruit CircuitPython 5.0.0-beta.2-90-g776c9b011 on 2020-01-04; Feather STM32F405 Express with STM32F405RG
>>> 
>>> import minimqtt_demo
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "minimqtt_demo.py", line 94, in <module>
  File "adafruit_minimqtt.py", line 120, in __init__
AttributeError: 'str' object has no attribute 'encode'
>>> string = "ad...
onyx hinge
#

I said way back on 11/29 that I could play 2 mp3s through audiomixer on nRF. I think it was that "test.mp3" (40kBit/s 44.1kHz, stereo) and that I was using i2s audio out.

#

and of course it was from flash, not SD

#

samd51's clock speed is way higher than nRF52840 isn't it?

stuck elbow
#

120MHz

#

but it's ARM, so instructions take several ticks

onyx hinge
#

looks like I reformatted the 52840 feather that had that code on it, for working with seesaw and kmk. but that tells me to try next with that same file on samd51

errant grail
#

@onyx hinge I recalled testing M0 DAC output drive two years ago for a JP AM radio transmitter project. My notes confirm that distortion increased when the load resistance dropped below 5k-ohms. Wish I had taken some o'scope pictures.

tulip sleet
slender iron
#

@tulip sleet do you need it in soon? I was going to do it this week

tulip sleet
#

no, i was just going to test BLE HID, and noticed it was hanging out. No rush on my part.

onyx hinge
#

not a lot of time left over

slender iron
#

@tulip sleet I wanted to test a few of the guide updates before merging

tulip sleet
#

sure, np, I wonder if there is some guide text to update too, in a few places.

onyx hinge
#

but when switching to my 'mixer' branch it doesn't look much worse/different

#

so that points to "bug" rather than "running out of CPU"

#

afk for some lunch, back for the voice meeting

slender iron
#

@raven canopy I got ya. no need to email

bright aspen
#

Total discord noob here. Where do I mention or report possible bugs or surprising features of CircuitPython beta releases and latest builds?

idle owl
#

@bright aspen Filing an issue on the CircuitPython GitHub repo is the best option.

#

<@&356864093652516868> Meeting in ~40 minutes. Don't forget to add your Hug Reports and Status Updates to the doc even if you're attending - it's super helpful. Looking forward to seeing everyone there! https://docs.google.com/document/d/1GDZ5iwjekH8D-wLp5atE8N4eL4L6pwmDZcK6oG9YN0A/edit#

bright aspen
#

@idle owl Thanks!

gilded cradle
#

Thanks for the reminder @idle owl

idle owl
#

@bright aspen You're welcome! You can mention things in this channel as well, but filing an issue gives us a place to discuss and track it.

bright aspen
#

@idle owl I will file an issue unless my mention generates comment that allows me to see I goofed. Mention: AudioOut.paused occasionally gets stuck when playing mp3. Insane laughter is welcomed.

tulip sleet
#

@bright aspen @onyx hinge is working on that and sees problems like you describe

onyx hinge
#

Yes i did see something like that as well. But worked around it rather than fixing it. @bright aspen if it's convenient can you file a github issue so I don't blow it off?

bright aspen
#

@onyx hinge I found that you did. #2374

onyx hinge
#

oh hey I did.

#

memory like a rusty vise!

manic glacierBOT
#

Here's a reproducer that uses RawSample. Tested on pygamer:

import time

import audiocore
import audioio
import board
import digitalio
import audiomp3

r = audiocore.RawSample('\x80' * 1024)
s = audioio.AudioOut(board.A0)
s.play(r, loop=True)
time.sleep(.1)
s.pause()
time.sleep(.1)
assert s.playing
assert s.paused
s.resume()
time.sleep(.1)
assert s.playing
assert not s.paused
#

Many thanks for everybody's work on HID support thus far. Prior to the refactor in https://github.com/adafruit/Adafruit_CircuitPython_BLE/commit/8291ee9b1bd2206cb384483183c30358be40e6c5, I was using code like (simplified):

from adafruit_ble.hid_server import HIDServer
ADVERTISED_NAME = 'Whatever'
hid = HIDServer(ADVERTISED_NAME)
if not hid.connected:
	hid.start_advertising()
	while not hid.connected:
		pass
# ... do something once connected ...

Once I'd paired my...

idle owl
#

@lone axle Thank you for adding notes to the doc! I moved your notes up to the top - we read them off alphabetically, so that's how we try to order the list. I wanted to let you know in case you try to view or update anything.

errant grail
#

Text only today.

drowsy geyser
#

Text only here, too.

stuck elbow
#

text only

drowsy geyser
#

@idle owl I probably botched the order, too, then. Sorry!

lone axle
#

@idle owl Ah, thank you.

#

I am text only today as well.

river quest
#

@errant grail nice work on this graphic, i am mentioning the thermal camera project today in the community section, great work πŸ™‚

errant grail
#

@river quest Thank you. It was a step in the process of gaining an understanding of displayio. Still have more to learn...

onyx hinge
#

oh that reminds me I did a thermal camera to pygamer screen demo over the break, I should polish it up and maybe get it added to github.

river quest
#

@onyx hinge yah, please do!

onyx hinge
#

user requested that I add "press button to save to SD card"

river quest
#

yah, that's a good idea

errant grail
#

oooh. save to SD. nice!

onyx hinge
#

nothing sophisticated like in that screenshot of @errant grail 's though

errant grail
onyx hinge
errant grail
#

I'm using the AMG8833 8x8 FeatherWing

idle owl
#

@old smelt Are you participating or lurking today?

onyx hinge
#

I was guessing that from the nice blobby pixels. not that 768 pixels is photo quality

old smelt
#

I'll participate. Sorry!

#

Running behind.

turbid radish
#

lurking today

idle owl
#

No worries! Wanted to know how to enter your name in.

errant grail
#

I opted for the low-res for my application thinking that CircuitPython wouldn't be fast enough. However, I was pleased with the speed.

#

Going to try 128x128 extrapolation just for the fun of it.

manic glacierBOT
turbid radish
#

subscribe to the CircuitPython weekly newsletter (comes out Tuesdays)

#
Adafruit Industries - Makers, hackers, artists, designers and engineers!

The Python on Microcontrollers newsletter – your best source for Python information every week Subscribe now, it arrives in your inbox every Tuesday The Python on Microcontrollers newsletter is the…

river quest
#
Adafruit Industries - Makers, hackers, artists, designers and engineers!

As 2020 starts, let’s take some time to set goals for CircuitPython in 2020. Just like 2019 (full summary here), we’d like everyone in the CircuitPython community to contribute by posting the…

#

(and we have a counter on the pages there now too! Thanks Melissa and Justin!)

manic glacierBOT
river quest
#
Adafruit Industries - Makers, hackers, artists, designers and engineers!

Adafruit’s Top Ten Best Selling Products of the Decade #AdafruitTopTen #DecadeofAdafruit Welcome to the roaring ’20s!! Not only are we rolling over a new year, but we are also looking b…

#

CircuitPython Thermal Camera. Here is the final test of the Thermal Camera project. It uses an AMG8833 Thermal Cam Wing and PyGamer with CircuitPython. Features include image/histogram display, alarm, focus, adjustable display range:
https://twitter.com/CedarGroveMakr/status/1213696186764288001
https://youtu.be/IyMZOlKJu3Q
https://github.com/CedarGroveStudios/Thermal_Camera

@adafruit @CircuitPython A benefit from pursuing this project was gaining a working knowledge of @CircuitPython's displayio graphic approach. A pivotal step was visualizing a display group's inherent layering. Hoping that developing project design documentation will help t...

CircuitPython code running an Adafruit PyGamer. Sensor is the AMG8833 Thermal Camera FeatherWing.

β–Ά Play video
GitHub

A PyGamer/PyBadge Temperature Visualization Device - CedarGroveStudios/Thermal_Camera

manic glacierBOT
onyx hinge
#

cpb beat cpx this week in downloads!

raven canopy
#

I really wish piwheels had their API working. the blinka/SBC download numbers would be much more accurate.

neat folio
#

lurking

cursive condor
#

lurking

tidal verge
#

I am just lurking. You can ignore me

drowsy geyser
#

[repeat] text ony

#

only*

#

Kudos. Amazing progress on the Android app.

gilded cradle
#

It cut off for me too

solar whale
#

me too! I thought it was my end

old smelt
#

Darn!

turbid radish
#

Dropped packets?

old smelt
#

That was weird. Did I get cut off?

slender iron
#

it was going in and out

turbid radish
#

Anytime Jeff

manic glacierBOT
lone axle
#

😊 ty. And will do.

manic glacierBOT
#

@jerryneedell it might have been that MICROPY_CPYTHON_COMPAT needs to be overridden, not merely defaulted as it is in the PR. #2439 got merged before you had a chance to test it, which wasn't my intention - I don't have a adafruit_minimqtt setup available and thus didn't test the PR myself, I should have made that more clear in the PR text. I'll submit a new PR with a note that it should not be merged until it is working on your setup.

#

@jerryneedell it might have been that MICROPY_CPYTHON_COMPAT needs to be overridden, not merely defaulted as it is in the PR. #2439 got merged before you had a chance to test it, which wasn't my intention - I don't have a adafruit_minimqtt setup available and thus didn't test the PR myself, I should have made that more clear in the PR text. I'll submit a new PR with a note that it should not be merged until it is working on your setup.

the easiest way to verify is to do as above -- just...

turbid radish
#

Congrats @prime flower

prime flower
#

thanks anne !

ionic elk
#

A Boston CPy meetup could be a lot of fun...

fierce girder
#

"don't tell the PCBs" πŸ™‚ πŸ’œ

onyx hinge
#

The sound on a tonewheel Hammond organ is varied through the manipulation of drawbars. A drawbar is a metal slider that controls the volume of a particular sound component, in a similar way to a fader on an audio mixing board. As a drawbar is incrementally pulled out, it increases the volume of its sound. When pushed all the way in, the volume is decreased to zero.[16]

#

The Hammond organ is an electric organ invented by Laurens Hammond and John M. Hanert and first manufactured in 1935. Various models have been produced, most of which use sliding drawbars to vary sounds. Until 1975, Hammond organs generated sound by creating an electric curre...

ivory yew
#

oops I slept through the weekly.

errant grail
slender iron
#

@ivory yew not too late, still going πŸ™‚

ivory yew
#

but now I have a meeting

stuck elbow
#

I'm text only

prime flower
#

@ionic elk Yep - would be great to do one, even if it's a 1-time-thing (though it'd be neat as a recurring meetup)

stuck elbow
prime flower
#

love the orange

stuck elbow
#

it goes well with the yellow pcb

old smelt
#

So, I can't hear @ionic elk

#

Happened with @solar whale , too...

slender iron
#

I can

old smelt
#

THat's odd

slender iron
#

restart?

#

the app?

old smelt
#

I can everyone else - and you.

#

hear you typing, even.

stuck elbow
#

it happens, I just reconnect and it fixes it

old smelt
#

ok

#

yep - that worked

ionic elk
#

@prime flower I've got a couple of people here who would definitely be in by default, and advertising at A2 tends to go a LONG way, if we hosted it here

#

We could also just go concurrently with the circuit hacking night here at Artisans Asylum makerspace on wednesday

onyx hinge
#

[still getting cutouts in the audio]

lone axle
#

Much less frequent cutouts on my end this time

slender iron
#

getting most of it

prime flower
#

@ionic elk Sure - maybe the others will migrate over

neat folio
#

learn guide for flashlight? plz? πŸ˜‰

#

or parts list πŸ™‚

old smelt
#

I'll have to figure out what it was.

ionic elk
#

@prime flower It's a big lab we could just pick a corner and talk circuitpython haha. @tulip sleet could we convince you to make the hike?

manic glacierBOT
tulip sleet
#

@ionic elk sure

old smelt
#

But I thought that the lens and Gizmo could make a great Mad Eye Moody prop

raven canopy
#

brb

prime flower
ionic elk
#

@solar whale your note in github is that I can test it without needing the board, right?

solar whale
#

@ionic elk yes -- just a quick "sanity check" but I'll be happy to test it.

prime flower
#

@solar whale - the device address should be in the frame header payload... Are you giving your nodes unique names. This is interesting

ionic elk
#

I didn't dig down too much since I assumed (mistakenly?) from your post that it was hardware-requiring code

solar whale
#

@prime flower yes -- the node id is in the header. It's more a matter of collisions

#

without interrupts - the time not listening can become an issue

prime flower
#

Yep!

#

not ideal , but fwiw the chances of 2x lora nodes tx'ing at the same time is relatively slim. still, we need to quantify a packet loss % we deem as reliable for this PR.

neat folio
#

@idle owl I admire the way you think/reason. πŸ™‚

solar whale
#

@prime flower agreed - that is what I have been trying to quantify.

prime flower
#

Let's continue this over in #radio where @main meteor or someone familiar with protocols like this may chime in with thoughts

idle owl
#

Yep!

slender iron
idle owl
#

So you can run animations without a strip connected.

stuck elbow
#

it's not JIF, it's GIF

drowsy geyser
#

Correct. Or we'd say "jraphics."

stuck elbow
#

it's not jraphic interchange format

ionic elk
#

"...The debate over how to pronounce GIF, which stands for Graphics Interchange Format, re-emerged this week when Steve Wilhite, the inventor of the widely used Web illustration, declared it should be pronounced β€œjif,” like the brand of peanut butter, rather than with a hard G sound"

idle owl
#

Giraffes everywhere rejoiced.

gilded cradle
#

That's why I corrected myself. πŸ˜‰

onyx hinge
#

(I want to know what boat anchor of a 3d printer @pastel panther picked up)

drowsy geyser
#

Yes, he invented it, but he's still wrong.

pastel panther
#

@onyx hinge it's a CR10S V2. At this point I'm unsure if it's the printer or me; Good money is on me being a total newb and not knowing what is reasonable to expect.

onyx hinge
#

@pastel panther I hope you are happier with it soon

pastel panther
#

thanks

#

sorry, I keep saying "CR10S V2" which isn't a thing; I've got a CR10 V2

manic glacierBOT
#

Hi there :)

I think finally this puppy is ready for the initial commit and review.

The commit adds the NXP i.MX RT10XX series port, so far supporting the RT1011 and RT1062 chips but the whole family is very similar so it's easy to expand.

Support status:

  • AnalogIn - seems to work, tested it on the RT1011
  • I2C - seems to work, I managed to scan and talk to a sensor
  • SPI - should work in theory, haven't quite tested it enough yet
  • UART - seems to work, supports the new timeout ...
old smelt
#

I have to drop off. Have a great week, all!

onyx hinge
slender iron
indigo wedge
#

Hehe, those rocket reactions on github feel sarcastic cause I took so long to do this πŸ˜„

manic glacierBOT
stuck elbow
#

The problem I had is that I have the same board with different displays sourced from different places, and they have different offsets

prime flower
#

(I think he's talking to someone IRL)

ionic elk
#

SORRY

#

I don't know how that happened

neat folio
#

new world record! πŸ™‚ gratz πŸ˜‰

ionic elk
#

oh jeeze my goof recorded for all eternity

manic glacierBOT
raven canopy
#

Thanks everyone!! It's going to be another great year, simply because you're all here.

turbid radish
#

Thanks all

gilded cradle
#

Thanks

neat folio
#

for 2020 I want more in the weeds πŸ™‚

#

I like weeds, it's a dog thing

#

after the weeds was a thing for while too 😦

prime flower
#

@onyx hinge Ok, so there is an issue which I haven't figured out with nina-fw's SNTP. It affects every piece of code which uses Adafruit_CircuitPython_NTP.

onyx hinge
#

I wouldn't mind a few more organized times to just chat about problems, it's something I miss from working in an office

prime flower
onyx hinge
#

let me toss that on my pyportal, it should reproduce the issue right?

prime flower
#

Absolutely should repro

onyx hinge
#

wow this screen is so big compared to pygamer

prime flower
#

is it a titano?

onyx hinge
#

no just the original

solar whale
#

Have a good week -- dog is demanding a walk πŸ‘‹

neat folio
#

walkies... the proper term is walkies

slender iron
#

@indigo wedge thanks for the PR! I'll try and do a first pass today

onyx hinge
#

hm is my library out of date ? AttributeError: 'NTP' object has no attribute 'valid_time'

prime flower
#

@onyx hinge try updating, should be fine, works on my machine (TM)

#

I'm curious if the firmware is spending time polling the server (why would it be...the wifi conn is established prior to SNTP being set) or if it's a predefined NTP timeout

onyx hinge
#

OverflowError: timestamp out of range for platform time_t

stuck elbow
#

CircuitPython counts time from a different starting point

onyx hinge
#

trying again with beta2

prime flower
#

I'm on Beta2, all 5.0 libs

onyx hinge
#

so it looks like the ESP will return a current time of "0" for awhile after startup

prime flower
#

Right, that's here

#

the use of 946684800 is what I'm curious about...

onyx hinge
#

TZ=UTC date --date=@946684800
Sat Jan 1 00:00:00 UTC 2000

#

seems like a pretty special date to me

prime flower
#

πŸ™‚

#

Ok, so it's waiting for it to increase past that timestamp since that would be the earliest date possible?

onyx hinge
#

It might start counting at zero seconds from bootup, but then when it gets back an NTP packet it updates to "now", which is always after 2000?

prime flower
#

yeah, I wonder if there's a way to handle this other than polling it

onyx hinge
#

I suspect not

#

it looks like it sends an NTP packet "shortly after" getting on the network. and here it reliably gets a packet back "shortly after that"

#

it has to do things like DNS-resolve the NTP server too

#

here it's >10s from starting the DHCP process to getting the NTP packet back, but I'm not sure how much of that is after is_connected starts being True

#
21:15:25.047475 ARP, Request who-has 10.0.2.76 tell 10.0.3.226, length 46
21:15:25.047504 ARP, Reply 10.0.2.76 is-at 94:10:3e:98:c6:72, length 28
21:15:25.054753 IP 10.0.3.226.49153 > 66.85.78.80.123: NTPv4, Client, length 48
21:15:25.063297 IP 66.85.78.80.123 > 10.0.3.226.49153: NTPv4, Server, length 48
``` I think that it became connected right after that first ARP request above, then a 6s pause, and then it starts doing the NTP
#

because of my network configuration, DNS packets are not visible here

prime flower
#

The 6s pause is due to "things like DNS-resolve"'ing the server, right?

onyx hinge
#
21:18:29.373867 ARP, Reply 10.0.3.226 is-at a4:cf:12:55:f9:14, length 46
21:18:33.469910 IP 10.0.3.226.40995 > 10.0.2.59.53: 3376+ A? 0.pool.ntp.org. (32)
21:18:33.594753 IP 10.0.2.59.53 > 10.0.3.226.40995: 3376 4/9/0 A 138.68.46.177, A 172.98.193.44, A 206.55.191.142, A 192.111.144.114 (246)
21:18:33.879531 ARP, Request who-has 10.0.2.76 tell 10.0.3.226, length 28
21:18:33.879555 ARP, Reply 10.0.2.76 is-at 94:10:3e:98:c6:72, length 28
21:18:33.881117 IP 10.0.3.226.49153 > 138.68.46.177.123: NTPv4, Client, length 48
21:18:33.920302 IP 138.68.46.177.123 > 10.0.3.226.49153: NTPv4, Server, length 48
``` here's a more complete trace
manic glacierBOT
onyx hinge
#

so for me it's pretty fast from starting DNS activity to having an NTP time received, but there's a multi second delay before it starts the process with the first DNS packet

manic glacierBOT
onyx hinge
#
/** According to the RFC, this shall be a random delay
 * between 1 and 5 minutes (in milliseconds) to prevent load peaks.
 * This can be defined to a random generation function,
 * which must return the delay in milliseconds as u32_t.
 * Turned off by default.
 */
#if !defined SNTP_STARTUP_DELAY || defined __DOXYGEN__
#ifdef LWIP_RAND
#define SNTP_STARTUP_DELAY          1
#else
#define SNTP_STARTUP_DELAY          0
#endif
#endif
#

(I think esp incorporates lwip but we probably don't know exactly what their source says)

indigo wedge
onyx hinge
#

but .. it's supposed to wait a random length of time after start for the first (S)NTP poll, so it may just be doing its job @prime flower

#

also 5000 is not 5 minutes in milliseconds, but who is counting πŸ™‚

manic glacierBOT
#

we can push the 2019 board definition but a change in circuitpython 5 breaks I2C for us.
right now our fork handles this by reverting this change but i don't think that would be suitable for upstream. We are thinking of a better solution which would work with upstream but it is still WIP.

If you prefer to give us a PID when the PR is ready we have no problem to wait.

More details about the issue:
We don't have pullups on the board and https://github.com/adafruit/circuitpython/commi...

prime flower
#

RFC states it could be 1<delay_mins<5, I wonder if decreasing the delay would be OK if its within the params. I won't fiddle with it past there, the NTP needs to be set once in user-code and having a ~10-15sec delay on bootup once isn't terrible

onyx hinge
#

I'm not sure it's the full explanation, either, because it looks like the DNS query would happen, then the random delay, then the NTP query

prime flower
#

@onyx hinge what networking setup are you running to obtain those frame captures - wireshark, something else?

onyx hinge
#

@prime flower just tcpdump running on my openwrt router

#

tcpdump -n -i br-lan 'ether host a4:cf:12:55:f9:14'

prime flower
#

(asking bc I'm going to be setting up a router soon and that's super useful for me)

onyx hinge
#

only problem is I have to reset it from time to time or my internet speed goes down by 90% 😦 😦

manic glacierBOT
onyx hinge
#

the hardware is Linksys WRT1900AC which was a cast-off from a friend but still pretty good spec

#

but yeah I think you are going to just have to poll, as there's a deliberate random delay (and maybe some other less deliberate delays on top of that, it's not clear)

#

going afk

prime flower
#

thanks for your help!

manic glacierBOT
pastel panther
manic glacierBOT
idle owl
pastel panther
#

@idle owl Hadn't tried it yet. I'll give it a go

idle owl
#

@pastel panther Might be because there's extra whatnot in __init__.py that it requires a top level docstring.

pastel panther
#

@idle owl Ya, that's what I was thinking but it likes that even less πŸ€” (may have done it wrong)

idle owl
#

bleh. hmm.

pastel panther
#

Maybe the format is wrong πŸ€·β€β™€οΈ

#

I'll look into it more when I'm back

manic glacierBOT
#
[adafruit/circuitpython] New branch created: revert\-2439\-stm32\-cpython\-compat
ionic elk
#

@slender iron I hit a revert button on a PR and now github is DREADFULLY confused. Is it possible to delete the branches that github makes? I don't see an option for it anywhere

idle owl
#

@ionic elk git pull and delete it from command line maybe? I don't see anything obvious on GitHub either.

ionic elk
#

It's a branch that was made on the actual circuitpython repo, not my fork, is the thing.

#

hence my nervousness mucking with it

#

it's revert-2439-stm32-cpython-compat

manic glacierBOT
#

Currently we have some unnecessary bloat of the BUILD flags that are shared across all ports, notably that there are differently named settings to turn things off as well as on:

  • CIRCUITPY_FULL_BUILD (everything on the list)
  • CIRCUITPY_SMALL_BUILD (just turns off full build only items)
  • CIRCUITPY_DEFAULT_BUILD (everything not in full build)
  • CIRCUITPY_MINIMAL_BUILD (turns off default build items)
  • CIRCUITPY_ALWAYS_BUILD (items with no HAL component that always get built)

It'd b...

#

still no joy

Press any key to enter the REPL. Use CTRL-D to reload.
Adafruit CircuitPython 5.0.0-beta.2-91-gb778aee21 on 2020-01-06; Feather STM32F405 Express with STM32F405RG
>>> import minimqtt_demo
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "minimqtt_demo.py", line 94, in <module>
  File "adafruit_minimqtt.py", line 120, in __init__
AttributeError: 'str' object has no attribute 'encode'
>>> string = "test"
>>> dir(string)
['count', 'ends...
simple pulsar
#

@prime flower @onyx hinge On tcpdump you may wish to set the snaplan -s too if you want to capture all of each packet. Obviously increases load and any storage if you are -w file'ing.

manic glacierBOT
simple pulsar
#

@onyx hinge What's the interest in ntp here and why is it problematic if it has a laid-back startup wrt to polling?

manic glacierBOT
simple pulsar
#

@prime flower My knowledge here is from 15 years ago but if you want an instant setting of time at boot time from ntp for a device that has no RTC clock then isn't a one-off ntpdate the typical solution followed by starting up the daemon as needed? ntpdate won't have issues with big time stepping too. Ah, reading more into this thread it looks like you are not using a bog standard ntp distribution here.

manic glacierBOT
trim elm
#

@idle owl I added a docstring to the top of __init__.py, and it works. Really odd that it wasn't working for you @pastel panther

idle owl
#

@trim elm Good to hear.

trim elm
#

@idle owl Do you want me to add a license to __init__.py?

idle owl
#

@trim elm Nah, we really only do that for super complicated ones.

#

It's fine as is.

trim elm
#

Ok

manic glacierBOT
trim elm
#

@idle owl It passed Actions, can you review the docstring I put in __init__.py? Thanks

slender iron
#

@ionic elk it's ok to have a spare branch around. what do you mean by confused?

idle owl
#

@trim elm It says checks have not yet completed. Please ping me once it passes.

trim elm
#

@idle owl Ok. I saw that the push test had completed and assumed that the pr test would be completed soon after, but it looks like it's still queued

slender iron
#

@indigo wedge want to chat about the uf2 impl?

#

just how to organize it

indigo wedge
#

Sure, we can set up a chat this week, right now it's midnight here πŸ™‚

slender iron
#

kk, thanks for pushing everything! I'm excited!

indigo wedge
#

my pleasure and embarrassment that it took so long πŸ˜„

slender iron
#

no worries. glad you feel good about it

indigo wedge
#

now i can go back the HW as we work on merging the SW πŸ™‚

slender iron
#

πŸŽ‰

indigo wedge
#

I was surprised how quite easy to was to get uf2 working with tinyusb

crimson ferry
#

@prime flower @onyx hinge Jan 1, 2000 is special to CP/SAMD at least https://circuitpython.readthedocs.io/en/latest/shared-bindings/time/__init__.html
Not sure why WiFi.cpp follows that. NTP time should technically be relative to Jan 1, 1900.
Does anyone know if UDP is fully implemented in ESP32SPI? Might be handy to test an alternate path for NTP etc. I see some code there, not sure if it's all there and tested.

indigo wedge
#

and i'm excited about the potential of having one bootloader for many many chips

slender iron
#

ya, me too! thanks for doing it that way

indigo wedge
#

like, tinyusb has stm support so we just implement flash api there and boom, uf2 for stm

trim elm
#

@idle owl It finished running

idle owl
#

@trim elm Merged.

trim elm
#

@idle owl Thank you

slender iron
#

@ionic elk reading your meow:bit email: you don't need to move the program start. we could squeeze the internal flash between it and the bootloader

slender iron
slender iron
#

and now it's merged. πŸ™‚

manic glacierBOT
#

The nrf I2C drivers turn on internal 13K pullups (typical, range is 11k-16k). We don't turn these off, but they are not on when we first test for pullups , using GPIO operations.

The code is testing for powered pullups. The original problem was that an Arduino Nano 33 BLE has uses a set of 4.7K pullups for all of its on-board peripherals. The peripherals can be switched off, and when they are, the pullups are unpowered. So that puts the equivalent of a 9.4k resistor between SCL and SDA in ...

simple pulsar
crimson ferry
#

@simple pulsar thanks

pastel panther
ruby atlas
#

I think I'm the only python code contributor to that repo.

slender iron
#

@pastel panther totally! I'm behind on emails and reviews

pastel panther
#

got it

#

blammo, done

slender iron
#

thanks!

manic glacierBOT
river quest
#

Preview of the first "Python for microcontrollers” newsletter for 2020! Sign up for some great content, community projects, sneak peeks of hardware, and more over on the β€œPython for microcontrollers” newsletter! https://www.adafruitdaily.com

https://youtu.be/k71PdFD0US0

Preview of the first "Python for microcontrollers” newsletter for 2020! Sign up for some great content, community projects, sneak peeks of hardware, and more over on the β€œPython for microcontrollers” newsletter! https://www.adafruitdaily.com

#circuitpython #python #mic...

β–Ά Play video
manic glacierBOT
manic glacierBOT
manic glacierBOT
manic glacierBOT
indigo wedge
stuck elbow
#

it's really popular

coral marsh
#

Somebody can help me out with a code for python with ws2811 leds on raspberry?

indigo wedge
#

@stuck elbow but I only sold like 200,i thought adafruit boards would have thousands

stuck elbow
#

no, they don't really sell as many of them as it seems

#

it's still just a hobbyist market

manic glacierBOT
prime flower
#

@crimson ferry Not sure about the state of UDP in ESP32SPI

crimson ferry
#

Could make some sense... enforces minimum interval across restarts

#

RFC is pretty explicit: "A client MUST NOT under any conditions use a poll interval less than 15 seconds."

manic glacierBOT
onyx hinge
#

I wanted to ask the same question, I have a purple teensy 4.0 just waiting for use

slender iron
#

@onyx hinge should be relatively easy I think

onyx hinge
#

needs a board file and a linker file for non-express-ish use I suppose

plucky flint
#

-> AFK to give a talk in Cambridge. πŸ‘‹

idle owl
#

@plucky flint Not late at all, thanks for passing it on. Have a lovely time!

plucky flint
#

@idle owl πŸ€—

slender iron
#

@onyx hinge all imx rt boards have to have qspi flash because it stores the code externally

onyx hinge
#

ah I read too much into what gragib said about needing to add SPI flash

slender iron
#

it is only 2mb though. artur's is 8 mb

#

Flash is accessed by FlexSPI, which maps the entire Flash into the M7's memory. Any location in the Flash chip may be read as if it were ordinary memory. Caching is used, so often there is little performance loss. But a cache miss does require many clock cycles to fill a cache row from the Flash chip. Normally only large tables, startup code, and other resources which are not speed critical should be accessed from the Flash memory. String constants may be placed only in the flash using F("string") syntax.

onyx hinge
#

code and CIRCUITPY in the same flash device seems more like non-express configuration to me

slender iron
#

ya, in the port its marked "internal"

#

but it has the size of an express board since it is an external chip

onyx hinge
#

what kind of split would make sense, 1/1? 1MB code for circuitpython core should be more than ample, you'd think.

slender iron
#

ya, that's what the current ones are, 1/7

manic glacierBOT
tulip sleet
#

@slender iron could I talk to you about ble evt handlers and their lifetimes across vm instantiations? I ran into a problem last night trying to add an evt handler before the vm was set up (to catch cccd changes). The linked list of evt handlers is allocated from the heap. I could special-case my own problem in some way, but I'm worried about the CircuitPython service event handlers living between vm's.

#

e.g. the long-lived CircuitPython service connection

slender iron
#

ya, I'm around

tulip sleet
#

i'll start a call

manic glacierBOT
slender iron
solar whale
#

I don't use the I often but I have not noticed a problem -- I'll try it a few times.

#

just tried a Grand-central -- came right up and ejected right away

slender iron
#

hrm, not sure what their issue is then

solar whale
#

just tried a feather_m4_express -- no problems -- wrote a file to it as well

slender iron
#

hrm

solar whale
#

no idea

#

i was using recent builds, not Beta2

manic glacierBOT
sly falcon
#

@slender iron @solar whale the only thing I thought of when I read that, was whether or not they had tried an unmount via the CLI.....ie, is something going on with the UI that's hanging and not actually the USB/filesystem subsystems of the kernel? Not sure how much you wanted to dive down that rabbit hole...so feel free to ignore my thought train πŸ˜‰

manic glacierBOT
solar whale
#

@sly falcon interesting -- if I do a CLI umount, it unmouts just fine, but if I then unplug it the GUI does complain about it not being ejected -- umount != eject -- but it still works ok.

sly falcon
#

oh interesting....I hadn't thought about the UI not noticing that the filesystem had been unmounted

solar whale
#

but the eject icon disappears when you umount πŸ˜‰

sly falcon
#

on Cinnamon on my various Fedora workstations, if I do an unmount of the fs, the UI clears the mount in the GUI eject dealy in the toolbar

onyx hinge
sly falcon
#

@solar whale oh, ok...well that's good

#

@onyx hinge oopsie! 😦

onyx hinge
#

it lets me access the debug header

sly falcon
#

haha...well....WINNING! πŸ₯³

indigo wedge
#

@slender iron darn i wanted to press it πŸ˜›

slender iron
#

oops, sorry!

#

I thought you'd be asleep

indigo wedge
#

doesn't matter πŸ˜‰

#

it;s only 11pm

slender iron
indigo wedge
#

oh yeah need to add

#

i'll have some tomorrow

slender iron
#

kk, awesome

indigo wedge
#

meeting up with a pro photo friend to take photos of some other boards for Tindie πŸ˜„

slender iron
#

excellent! I'm sure adafruit would give you photos they take too

indigo wedge
#

yes once i ship the boards to them πŸ˜…

slender iron
#

πŸ™‚

slender iron
#

I'll do beta.3 shortly

#

after I get a frozen update in

#

testing it now

manic glacierBOT
slender iron
#

@stuck elbow is your hid output report PR ready?

stuck elbow
#

@slender iron no, sorry, I didn't have time to work on it, and it somehow mysteriously stopped working when I tested it last week with samd51, I suspect it only works on samd21, because that's what I was testing before, but I didn't have the time to check

#

@slender iron I mean the code should be fine, it's probably just tinyusb that doesn't work on samd51 with this

#

either way, we should probably wait with merging it

slender iron
#

kk, np

#

no rush, just wondering

coral marsh
#

@stuck elbow im very thankfull that you helped me out today i was wondering do you know the code to fade in to 255, 41, 147 ?

stuck elbow
#

@slender iron holidays ended, work started :(

slender iron
#

ya, understandable

stuck elbow
#

@coral marsh from 0, 0, 0?

coral marsh
#

from 0, 0, 255

stuck elbow
#
for step in range(10):
    pixels[0] = int((0 * (9 - step) + 255 * step) / 10), int((0 * (9 - step) + 41 * step) / 10), int((255 * (9 - step) + 147 * step) / 10)
#

general formula is int((start * (number_of_steps - 1 - step) + end * step) / number_of_steps) for each component

coral marsh
#

@stuck elbow this is what i got so far the end must be the warm white and iff possible all off with keyboardninterupt

#

i even want a button to start the script as you turn the xbox wall on ant iff possible push it again or another button to play the opposite in reverse

idle owl
#

@slender iron Where is usb_hid coming from? CircuitPython?

stuck elbow
#

@idle owl it's in C built into the firmware

idle owl
#

Ok.

slender iron
#

πŸ‘

#

and its been in the firmware a while. only the library is changing

#

nice post @gilded cradle ! Its amazing to me that you just started in the community a year ago. πŸ™‚

gilded cradle
#

Thanks @slender iron ☺️

idle owl
#

@slender iron Merged your PR.

slender iron
#

ok, will update the guides

idle owl
slender iron
#

its on my todo list

#

gotta update the guides now

idle owl
#

That's fine, I was going to reply thanking them for their input. But wanted to make sure you had it on your radar.

slender iron
#

thansk

#

they emailed us about it too

idle owl
#

Ok

hexed pawn
#

Hi y'all. I created a pull request for the PyPortal library to orient a mix of portrait and landscape images correctly from multiple fetch()'s. Feedback is welcome. A nice demo is included in the comments you can try it out. https://github.com/adafruit/Adafruit_CircuitPython_PyPortal/pull/60

simple pulsar
#

Does anyone have experience of CPB to CPB bluetooth range? 5m looks like max for me. Got them on their sides. One is LiPo powered.

onyx hinge
exotic pumice
#

do FDPLL0 and DPLL0 refer to the same pll?

#

under clock source selection it's DPLL0 and under PCHCTRLm it's FDPLL0

manic glacierBOT
drowsy geyser
#

@slender iron Potentially dumb question. I'm looking at the CPB and I don't see any obvious pads to attach the J-Link. Any advice? I still need to ransack the lab to find it, but I'm trying to figure out next steps....

slender iron
#

should be on the back of the board

#

just test points usually

drowsy geyser
#

Oh!!! Got it. I was looking at one in a case and the pads are under the mounting hole.

#

Thanks!

manic glacierBOT
#

Hey @tannewt ,

A Python library would be the easiest way to do it. But it might need doing at the hardware level of the SAMD21/51. I read in the datasheet that these chips should support RS485 at the hardware level.

I know only one python library that does this well at the moment. https://github.com/mathertel/DMXSerial

At the heart of DMX:

  • serial RS485
  • 250 kbit/s
  • 513 byte transactions (frames)

[Element 14 DMX Explained](https://www.element14.com/community/groups/ope...

manic glacierBOT
#

After extensive reading from the adafruit forums from 2018 ... please ignore my comments about direct hardware support.

The SAMD51 has some support for RS485 but external hardware is still required. The SAMD21 has no built in support.

The only way is to use a transceiver module (MAX3485 is most popular) and normal UART protocols with a packet decoding layer (presumably this is what everyone in this issue is looking for)...

manic glacierBOT
#

Based on previous mention of the SAMD51 having this hardware feature too I thought I'd try a nearby Feather M4 Express. I put 4.1.2 on that and I've noticed that works ok with numbers larger than 64.

It does blow up with -1 and 30000. I hunted around the upper magic value and it doesn't look like a fixed value but perhaps one related to memory. It goes into hard fault handler and says The CircuitPython stack was corrupted because the heap was too small. I doubt many people ar...

manic glacierBOT
#

It's tempting to suggest structuring the search like this:

for(SCK alternatives) {
   if(mosi != mp_const_none) search for mosi and continue outer loop if unsuccessful;
   if(miso != mp_const_none) search for miso and continue outer loop if unsuccessful;
}

which eliminates the duplicated code and removes a level of loop nesting. However, as this is not performance critical code, doing it what you felt was the most straightforward way possible also has merit.

manic glacierBOT
#

@jepler Unfortunately, this approach does not function properly in the both-enabled case, as it excludes an edge case where there is a second SPI peripheral on the MOSI pin that is the only viable match to MISO. The only way to properly find that is to have the loops nested.

I think I could still fit it all in one nested loop, but it'd take so many flags and crazy conditionals that I'm not convinced the marginal code lines reduction would be worth the cost in readability.

manic glacierBOT
#

@tannewt least expensive could be some 'amazon dmx led spot' (you never know if they are conform to the specifications...) -
the better setup: a scope or digital-logger/analyzer thing... ;-)
or just some already 'proven to work' arduino library..
all the implementation can be tested in the 3.3V / 5V TTL levels...
as @wallarug has written - to get to the actuall DMX512 HW-Layer ('just' RS485) some differential driver /receiver is needed..
here would be the challenge to check and find on...

meager fog
#

@onyx hinge heya are you comfy testing the hardware side of the SPI simplex PR?

#

e.g. with scope/logic

manic glacierBOT
onyx hinge
#

@meager fog I would need a suggestion of a "MISO" only device, I think

#

other than that, yeah

meager fog
#

if ya have a MAX31855

#

or can just connect MISO to 3v or gnd, look for 0x00 or 0xFF

onyx hinge
#

that's true

meager fog
#

if so ill remove it from my todo list πŸ™‚

onyx hinge
#

okay, so : pick a set of pins, verify that all 3 of: duplex, miso-only, and mosi-only work as expected.

meager fog
#

yep

onyx hinge
#

I didn't make headway on the audiomixer stuff yet, yesterday was working on a non-adafruit project and today I got distracted by urandom so far and now this πŸ™‚

meager fog
#

np

onyx hinge
#

but I'm learning heaps about pi I/O from that so it might come in handy if you need a hand on blinka someday

meager fog
#

blinka on pi is pretty solid!

#

if you find bugs submit a PR/issue

onyx hinge
#

and this is weird stuff, userspace driver for spi bus

#

not blinka/python at all

meager fog
#

i do need a userspace-for-spi at some point

#

because spidev does not compile on constrained platforms 😦

#

we have pure python ioctl for i2c, but not spi

#

or do you mean bit-banging

onyx hinge
#

accessing the bcm28xx SPI registers directly via mmio

#

and it's GPL so you wouldn't want to directly pull it into permissively licensed stuff like blinka

meager fog
#

oh juk

#

yeah we prefer not to do that, because the offsets change with ever new pi

#

thus, we use python and spidev

#

we tend to write large buffers over spi at a time

#

so its ok

onyx hinge
#

which blinka device is so resource constrained it doesn't have spidev?

meager fog
#

onionIO openwrt devices

#

they dont have gcc

#

8MB flash

onyx hinge
#

oh yeah are those the tiny mips ones?

meager fog
#

yeppres

onyx hinge
#

spidev is all ioctls, should be doable direct from python without a compiled module. I can look into it someday, did that for linuxcnc too

meager fog
#

yah in the future, its not a huge rush

onyx hinge
#

kk

meager fog
#

as mentioned, we have it for i2c

#

and we only bumped into the one board that doesnt support it

#

the nice thing is its a very simple interface for SPI

onyx hinge
#

ok, stm32 feather is on the workbench πŸ₯½

meager fog
#

ok in a vidmeetin πŸ™‚

#

ill add ya to a new issue just so we have it down

#

@gilded cradle FYI ^

gilded cradle
#

Excellent. Thanks @onyx hinge

manic glacierBOT
manic glacierBOT
#

Thanks for the info. To summarize: I don't think there is any core work needed for this. On the drivers side we'd likely need a community library for the external transmitter IC and then a library for the DMX protocol on top of that.

I don't have any experience with DMX so someone else will be a better person to do it. I'm happy to consult on the CircuitPython side of things but won't be picking this up directly myself.

slender iron
#

<@&356864093652516868> I'm going to grab lunch and groceries. Will do Beta 3 once I'm back so please get everything in that you want to go out.

indigo wedge
#

Quick, Scott is away, merge everything!

solar whale
#

@slender iron the stm32f405 will still not have the MICROPY_CPYTHON_COMPAT enabled but I don't think it's worth holding up beta3 for.

#

AFIK this only impacts using the miniMQTT library at this time.

pastel panther
#

@indigo wedge Imma smash-merge in support for my 1984 maytag washer LaughingMan

indigo wedge
#

that's a reference that just went way over my head πŸ˜…

pastel panther
#

not a reference, just nonsense πŸ™ƒ

#

pretty sure you could run a laundromat full of 1984 maytag washing machines with a trinket m0, if they're even electric. Pretty sure they ran on coal back then

exotic pumice
#

not enough io πŸ™…β€β™‚οΈ

solar whale
#

I bought a Maytag washer in 1979 -- pretty sure it did not have have a webserver built in....

manic glacierBOT
idle owl
#

@solar whale "pretty sure" πŸ˜„

slender iron
#

@solar whale is there a PR for it?

solar whale
#

@ionic elk is working on it , but It is not ready yet.

slender iron
#

kk, we can do beta.4 with it

#

will want to get bonding out when it lands

solar whale
#

No concerns from me.

#

I just wanted to make sure you knew the status.

slender iron
#

cool cool. thanks

simple pulsar
tulip sleet
#

@simple pulsar: @idle owl has an example of a lot of exception catching for BLE; I'm looking for it right now.

idle owl
tulip sleet
#

@idle owl thanks!

#

@simple pulsar I have ideas for writing a simple "EZ BLE" library that will handle all this dropping and reconnecting automatically; just haven't had time yet.

#

@simple pulsar see the send_packet() routine in that link

slender iron
#

ah, she beat me to it πŸ™‚

orchid basinBOT
manic glacierBOT
#

Currently most native objects don't use m_new_obj_with_finaliser(), which marks the object as having __del__() to call when the object is gc'd. Only network.socket and audiobusio.I2SOut currently do this, and I'm adding another use in _bleio.

audiobusio.I2SOut.__del__() just called its deinit(), which seems like a good idea. We could do the same for other objects with deinit(), like busio.*, etc. This would free up pins when their holding objects were gc'd.

I'm not sur...

simple pulsar
#

@idle owl @tulip sleet Thanks, will have a look in an hour or two.

orchid basinBOT
onyx hinge
#

@slender iron I know I have some PRs baking, but let's let them go for beta3 rather than rushing to accept any of them.

#

I missed it anyway I guess

#

furiously scrolls to the present

slender iron
#

yup, πŸ™‚

onyx hinge
#

thanks for beta3!

slender iron
#

lots to go in beta.4 πŸ™‚

harsh matrix
#

Can anyone help me find docs for CircuitPython builtin libraries?

harsh matrix
#

I have very low expectation of finding help() via REPL

#

I'm rehabbing an old joystick with obsolete interfaces, and I need to take some liberties with the usb_hid device provided by CircuitPython. I'm not sure how to define usb_hid device parameters in code, and I need to see some examples or documentation.

slender iron
#

right now the hid descriptor is fixed

#

you can use BLE and change it though

harsh matrix
#

OK. Thanks. That explains a lot.

slender iron
#

it is tricky with USB because the USB descriptor is used by CircuitPython itself

#

with BLE the HID descriptor is separated

manic glacierBOT
#

the external IC is only 'levelshifting' so no lib there..
maybe we need some special edge cases implemented in the UART Core...
in total you are right - best is if someone with deep detail understanding of the DMX-Protocoll finds the time to implement it -and then we will know where the limits are..
i think i could do it - but i don't know if and when i find spare time for it - so if there is someone else willing i could support/help with some protocoll information and testing with some ha...

idle owl
#

@onyx hinge Feel free to merge the PR you approved. Under normal circumstances I would also ask that you release the lib, but there's about to be a release sweep so you can hold off on that.

onyx hinge
#

@idle owl I will try to remember that. will also need a small tutorial the first time I do a library release!

orchid basinBOT
idle owl
#

@onyx hinge Ooh. Let's do a release on that library then to have you do it so you've got one under your belt.

onyx hinge
#

@idle owl we can do that right now if you want. is there a doc pointer I can start with, and then come back if I have a question?

orchid basinBOT
onyx hinge
slender iron
#

I bet @meager fog has an RT1010-EVK at adafruit they could photo

idle owl
#

Excellent. And, not really. I will think of a place to put that since this isn't the first I've needed to and won't be the last time I need to explain it. For now, I will explain it to you. It's quite simple. We have a basic template we include no matter what: ```
To use in CircuitPython, simply install the Adafruit CircuitPython bundle.

To use in CPython, pip3 install adafruit-circuitpython-bitmap-font.

Read the docs for info on how to use it.```Beyond that, you want to view the commit logs and mention any major updates above the template. In this case, we migrated to GitHub Actions and "Handle string inputs to load_glyphs for BDF." I like to thank the people involved with any contributions by @-ing them with their GitHub IDs as well, especially if they're new or don't contribute often. Use Markdown to format the list of updates as bullet points if you like, or list them however you like. The title should try to reflect the changes succinctly, but that's not always possible, so you can explain further in the release notes. As for the version number: do you understand semantic versioning?

onyx hinge
idle owl
#

@onyx hinge Correct, exactly.

#

Take note of the current version number so you can choose a new one.

#

At least half the time I have to go back to find it because I forget to do that πŸ˜„

pastel panther
#

@idle owl I usually keep the releases page open in another window for that reason

idle owl
#

I've started doing the same.

#

Or open it in another tab once I realise I forgot to.

pastel panther
#

word

#

just don't do like I did when releasing several libs and forget to close the releases window for a lib and the "recycle it" for another lib πŸ€¦β€β™€οΈ

onyx hinge
#
b3356eb (origin/master, origin/HEAD) Merge pull request #15 from tannewt/load_string_glyphs
49f2818 Merge pull request #14 from adafruit/dherrada-patch-1
31d0b01 (master) Merge pull request #12 from adafruit/dherrada-patch-1
idle owl
#

@onyx hinge Great! Flip the order though, put the bullets above the template.

onyx hinge
#

okie

idle owl
#

Then publish release!

#

@onyx hinge Ooh wait, the URL for the library bundle is wrong.

#

You can edit it if you already published it

#

should be https://circuitpython.org/libraries

onyx hinge
#

no I didn't publish yet

#

ta

idle owl
#

We've been slowly updating them as we do new releases.

onyx hinge
#

I also added

Thanks to contributors @slender iron and @dherrada.

idle owl
#

Excellent!

onyx hinge
#

after bullet points

#

want to review again or shall I publish?

idle owl
#

review again, send another link, it apparently changes when you make changes

onyx hinge
#

oops

idle owl
#

I refreshed and it 404'd πŸ™‚

onyx hinge
#

interesssting

idle owl
#

@onyx hinge Perfect! Publish it.

#

And that's the process.

onyx hinge
#

so some time after I do this, it will be picked up and actually put in the bundle?

idle owl
#

Yes.

onyx hinge
#

that happens daily or so?

idle owl
#

The next time the bundle builds which will be tomorrow.

#

It builds daily when there are updated releases.

#

@onyx hinge Thanks!

onyx hinge
#

thank you!

#

hm the title of the release is a bit silly ("1.0.4: Merge pull request #15 from tannewt/load_string_glyphs")

#

should I specify a "release title" manually?

#

@idle owl

idle owl
#

@onyx hinge Ah yeah, sorry I wasn't clear about that. You should manually make a release title.

#

Something like "GitHub Actions and load_glyphs" or some such

meager fog
#

yes

onyx hinge
#

(I bet most users have no idea about actions vs travis, it doesn't make any difference a user can notice does it?)

manic glacierBOT
onyx hinge
#

now time to figure out how to unbrick this nrf52840 feather, which isn't working right since I .. jlink flashed it with a firmware for stm32