 Yeah, we're live. Hello everybody watching the beside behind the scenes video of our hack chat So in all the social media networks, you'll see the hack chat link. This is hackaday's chat. This is Circuit Python happenings the more lead engineers here Scott the need of circuit Python is here me one more founder hackaday have nothing to do that today now other than Help it out with the video and answering questions that I can answer as well I think we're doing this for the next half an hour Dan, honey Money is in the hack chat. Just puts it up a link there So the topic is circuit Python happenings and more I think the last hack chat we did was earlier in the year So we'll see maybe a year ago. So we'll see how January 2022. Wow, time flies flies So lots happened Scott, maybe you want to start off with like what's some of the latest latest releases and more Yeah, I was just looking back in circuit Python stuff and and it Personal is that I was actually out a lot of last year as well because I had a kid as you as did you too. Yeah But I was looking back Yeah, collect them all but I think one of the Kind of going back from what we're doing now and going back a little bit before that I'm currently working on USB host support so the idea that you can plug in a USB device into a circuit Python device and If it's keyboard, you'll get serial input and if it's not then you're your Python code could use it That's one thing I'm working on Jeff has recently done a lot of synth IO improvements, which is and auto generating or generating audio from like synthesizing audio from circuit Python, which has been really cool and Todd bot and John Park to deserve some credit there giving Jeff the direction to go and then some things that happened kind of like further ago was like web workflow Which is the ability to use an edit circuit Python over a Wi-Fi Which people have been picking up and really using and then before that we had BLE workflow as well In terms of supporting chips, I think like 2022 like RP 2040 was still around but We had Sylabs come along and do the MG 24s Which is pretty neat. So that's that's kind of the latest chipset that we've had supported And it was is really awesome to see that Sylabs and do that work to have it supported So kudos them and it's supported on a spark phone board. We just got the word out So if you're interested in that, you have it in a press section or Yeah, I ordered them So there's yeah, I have one of those And then this is the spark for the board All right, someone said they missed you deep dive, which is What about that? Oh breaking news And sorry, I have a bit of a cold Hamza says haven't seen you in a while. I hope all is great and mr. Friday deep dives. Well, I just talked with Tim Yesterday, and I'm gonna start doing deep dives again Starting this week. We'll talk to you as be hosts. So that's 2 p.m. Pacific on the a different channel I'm only gonna commit to doing an hour, but if we go two hours It'll happen but yeah, it depends a lot on Depends on child care situation largely So foamy guy will continue to stream Saturday mornings and some other random times and then also fill in for me when I can't do Fridays So that's happening and I'm excited to to get back into deep diving Now that we've gotten to this daycare world. You have done more, you know, low level hardware I think it's what's cool is You know, we did DVI output on the RP 2040. So You know year and a half there haven't been as many New chipsets because that can everyone's kind of getting through this chip shortage like mess of the last year or so a year and a half Some parts are still not available. But you in the meantime, we were like, well, you know If there's you know, they're not new chips that's coming out Let's support some old ones. And so we've added a lot more stuff for RP 2040. We've added a lot more for ESP The ESP non USB chips got added. So the classic ESP 32 ESP 32 C3, which doesn't have native USB only has USB serial And there's gonna be like the new H7 You know, whatever chipsets that come out from ESP and we'll we'll support those as well And then also the IMX RT series a lot of a lot of work for the IMX RT And it's been also going back to the RP 2040. It's been cool to see people really push the bounds of PIO for both the DVI output and the and the USB host which we now have As well based on PIO Yeah, I'm surprised that the PIO was from Sikong I think is the name of the developer who wrote like a demo and I was like, wow, this actually works and tack who Works for Adafruit on tiny USB Added it to tiny USB so that both Arduino and circuit Python can take advantage of like USB host like, you know on a secondary Set of pins because like, you know, a lot of chips have USB host built-in But like then you lose your main USB connection and I always found that like a terrible development system Totally totally. Yeah. Yeah, especially because you know, USB is so core to the circuit Python and it still is. Yeah Okay, so any other questions? Yeah, I was hitting the jet. They said, you know, the new parent I rubbing I'm like, we actually have some circuit Python powered kids toys. It's a very Fun story. Yeah, and we're gonna use it as a test platform for the web workflow But I have my board here. I just haven't actually put it in the toy Yeah, well, I'm waiting for you to to get through some USB host stuff and then I'm like, okay that we can do it But yeah, we wanted to I you know replacing the guts of some Products, you know, you can get these actually it's CVS. It turns out like we would just CVS one like, oh my god You can like buy them there for 10 bucks and replacing the innards with an ESP 32 board And then we also, you know, the original point of this hack chat was to show off the Bus pirate board, which we kind of got distracted, you know, Scott and I have a little bit of a squirrel issue where it's like And then we like book the hack chat and then we like forgot to work on it. It's like sitting here. So I've got the I've got the yeah, this board. So it's it's a replacement for the bus pirate which Was originally designed by dangerous prototypes and see yeah, you got one and it used the FT2 32 RL into a pick 18 or 24 and I remember And it was you know, a great little like Swiss Army knife for hardware hacking I really loved it and we stock it. We were stocking it and then Our last time we tried to book an order seed was like, yeah, we can't get the chip anymore We're not making it. So it's good. It's been at least temporarily discontinued Which is a bummer. So we want to You know, we're like, oh PAO would make this like really great You can you can do so much stuff using almost any pen with with PIO. And so Do you want to talk a little bit about the development? I know you were you're also doing some Workflow with not say like but the Yeah logic Yeah, I definitely went down a tooling rabbit hole, which I'm kind of down still But I Had never really used the bus pirate so that was kind of new to me but you had the idea of re-implementing it on On top of circuit pipe on which I've gotten pretty far, but it wasn't clear to me Like which parts of the bus pirate people really use so we're still asking people like if you use Bus Pirate, let us know what pieces you use And there's an open repo that I can link to in the chat for the pirate code as well So I did that and then the other thing I was poking at as Sigrock is the open source open logic analyzer stuff and There's a a logic probe software firmware for the RP 2040 that you can use to capture and There's a pending PR, but the Sigrock project itself is not that Not that available or or not that active so I'm Re-implemented the core of Sigrock and Python So that makes it much easier to extend without having to be blocked on some like central Repository so I was doing that too and then I've also been playing around with like orb trace and black magic rope to Toolmate lots tooling stuff Yeah, one of the one of the funny things is you know The cool thing about the pic that was the original bus pirate chip was that it was five volts compliant Like literally, you know, it was like in the day she was like you can use five old signals even though it's it's at three volts microcontroller and I know there was a bus pirate v4 And I think that was also using a chip that had some five volt Friendly pins, but the RP 2040. I was like, you know, nothing in the data She implied that you can have five volt signals. And so it was kind of the toughest part of the hardware design was Dorking around and just figuring out like how do you do level shifting for five volts? You know, so you can use 1.8 volt 3.3 volt five volt logic with bi-directional pens for I squared C SPI SD IO and then you did SWD which I thought was cool because original bus pirate I think they had SWD support So having that all work on different logic levels and we found a comment on it thread from Like a hackaday that's where Evan from Raspberry Pisces. Oh, actually it is five volt compliant. It's just we don't we don't talk about it So we do have a little bit of protection circuitry now, but we've removed the the Zener diodes So we'll have to do another board spin, but you know, I think the hardware is good. We just we got a fictious project Well, I mean we had talked about the plan was to like get the original or the first batch of hardware out So people could try it and then give us feedback on this. I know it's gonna like I have to get over that fear of like What if like there's something wrong, you know, it's like I just have to like releasing okay releasing it Yeah, we can fix it. Okay. Somebody asks what audio codec does the My Little Hacker use? That uses the max 98 357 which is a Thanks, Phil a three watt Audio amplifier that has I2S input and it's like really inexpensive. It's only like, you know a dollar 25 or so and so it makes for a great because we use the speaker that's in the original toy Right. So so circuit Python only supports wave playback On the ESP though, I believe too. Yeah, because the MP3 decoding Library with the one we're using is I believe the real player one which is optimized for Arm Cortex And so, you know, that's that's what we use and it does really great on Arm Cortex You can even decode MP3's on the RP2040 despite it being a Cortex M0 I mean, it's an M0 plus, but it's still an M0. It doesn't have a DSP. It doesn't even have floating point And yet you can decode like, you know, not that, you know, 32 kilohertz mono, but you can decode MP3's on it The ESP32 S3 can S2 and S3 can do wave, but it can do wave very well and you can do audio mixing even with wave Because despite it not having floating point Sorry, it despite it not being Arm Cortex the ESP32 S2 and S3 are fast and powerful enough to do Can you type some of this in the chat for the audio codec for what my little hacker uses? Oh, yeah Yeah, and then John had a question in YouTube about working for MicroPython that we could talk a little bit about too Yeah, I started to I'm just like Here we go. Let me finish typing. Hold on Wait, I mean, I have like 5,000 windows codec is max I know 57 The folks are chatting on the Adafruit Discord server, too I'll I can answer John just in the video What was the rationale behind forking MicroPython into CircuitPython? This is something we did back in 2016-17 so I started working on MicroPython in the fall of 2016 And it was like early 2017 where we decided that we were going to rename And continue kind of our fork and the reason that we renamed is we wanted to be really clear The differences between the two like we had already forked we added samd support But then one of the major things that we didn't see eye-to-eye with Damian at the time was how we would structure The hardware API is so that they were uniform across all the ports if you know CircuitPython we have bus IO and digital IO and things like that and The technical side of that is that those interfaces are factored out so that they're not port specific and that's not something Damian wanted to do at the time So that was one of the major technical Challenges that we wanted to do. I also had it, you know, very I had a strong And I haven't like a one-hour talk where I talk about this, but I had a really strong philosophical Decision to make which was I did not want to have libraries that were both CPython and MicroPython because I'm the one who was like writing and supporting all the libraries We had like hundreds of libraries and I was already porting all the libraries from Arduino for all the sensors and devices and chips Everything from Arduino to Python and I had a bunch of Python libraries that would run it on like a Raspberry Pi or a Beagle bone and then MicroPython came on MicroPython had a totally separate way of doing hardware APIs and also like the low-level Libraries like OS and time were also different like it was there was not There was a there was some overlap between MicroPython and CPython, but not that much It was very easy to write code that would not run on one or the other Whereas with circuit pythons like look, I'm not gonna port every library all over again to MicroPython It needs to be a strict subset of CPython and this was another thing that we did not agree like MicroPython team said no MicroPython should be allowed to kind of do whatever it wants with the libraries if we want to stick new things into Time or OS or whatever. That's that's how prerogative because it saves space and it makes it faster I was like well, I don't I care more about my time managing these libraries then and keep keeping them maintainable Then like saving a couple bytes here and there and so another decision that I was like very strict on was Whatever libraries whatever code we write for circuit Python has to run on CPython with no Weird freaky like in you know inline changes to try to like massage it Obviously some things like NumPy don't exist on CircuitPython, there's some things that you know don't fit on the smaller chips But everything that runs on the smaller chips should run on bigger big Python That was also it was just ironic. They just changed their minds But until last week they disagreed with me on this and so it was and it was a big enough change that it was like Well, we can't call it MicroPython anymore because it's it would be unfair to people to think that they could run MicroPython code or circuit Python code on the other Because of the it would fail on import So that was that was like, you know one of the biggest things is for me to be able to maintain the libraries and the code It has to run on Raspberry Pi or Beaglebone or desktop You know a lot of our examples actually run on a desktop computer or on these little microcontrollers And that was a low-level change. One thing I'm gonna add is It's kudos to each team MicroPython circuit Python. So each team we talk with each other We try to help, you know, how do we make the best possible open source thing both efforts are open source But every single year ater fruit contributes financially to MicroPython And we also have helped the fundraise that has kept them going Which is the GitHub sponsor. So if you haven't go to GitHub look at MicroPython sponsor it because there is I did a Article GitHub thing where I'm just like here's all the forks of MicroPython. There's a ton Yeah, like the micro bit forked MicroPython and their code is completely incompatible and the laborious ESP fork is also like totally different at this point from the mainline MicroPython So it's not that unusual that there's a lot of forks We named the fork the story that hasn't been told Yeah, it's very confusing because you can have fun You can have 50 different MicroPython's and none of them are compatible, but circuit Python You know what it is and MicroPython from Damien's Team, you know what it is, but if you're interested in supporting open source The reason why a lot of people are able to build off of MicroPython it's because it's open source and we're starting to see not as many things be open source So this is a chance for folks to support The things they want to see in the world. We were the biggest Supplier of the MicroPython boards when Damien was making hardware. That was a way we like to support efforts But all these things work together and this is a really good success story because not every Flavor of MicroPython is it's gonna be maintained or make sense. There is the Lego version. They're not gonna Do the same things that circuit Python's doing not to do the same thing that MicroPython's doing And to Scott's credit, you know, just somebody asked like why why didn't you put that effort into MicroPython? We really did offer and I said Scott I will pay you to work on MicroPython that was originally what Scott was hard to do I was like I'm going to pay you to work full-time on MicroPython and MicroPython said they didn't want I mean, and I think it's fair I like we should also acknowledge just how Much work it is to support somebody contributing on your repo, right? So like By having circuit Python be a separate repo it meant that they didn't have to do a bunch of code reviews from me At the time and then we have more people that that we're doing that too so It's not that easy. It's not that easy to to just stay as as one unit Yeah, I mean like there's and I there's no like Frustration or you know friction. It's just like we all we all said hey wow like the things we want are slightly different Let's just do our own way But here's the thing it's all Python hardware and like the code is you know the stuff you learn from circuit Python MicroPython it's really easy to port between the two I think Alistair from Raspberry Pi even just posted up a project where he's like oh I took a circuit Python version of the code that Liz wrote and I just like tweak and mod it and they made it work on MicroPython on the W and I'm like that's that's cool. Like you know and like I did all the time I take code that's written for That's MIT license that's written for one microcontroller and you port it to another the timers are different The ADC is different. You have to put some if depths here and there It's not unusual like even if something is written in C doesn't mean it's necessarily going to even compile using the different You know a different compiler like moving from Arduino to and to you express so to you know, whatever TI things called You're gonna have changes even though it's the same language at mouth start is is nothing like what NXP has which is gonna be nothing like what TI has just nothing like what at mail used to have But I think it's like you know part of this ecosystem. I think it's What's nice is that people do have choices and they can have the same kind of interpreted language experience, but Different hardware is going to have maybe different versions of MicroPython Like if you're on the micro bit Versus the pie board versus you know circuit playground express versus, you know for us running at the API on Raspberry Pi Yeah, so It's more questions in the chat if you want to check it out about the C3 and I yeah I was gonna I was gonna do this one from YouTube first the tyeth one because it's in this vein So tyeth asks does this mean that there could be a reconvergence in the future? And this is something that we like revisit from time to time both with us circuit Python folks and When we talk with a micro Python team, which we do maybe once or twice a year and Every time it comes up. We still have some things that we want to do differently Like between the micro Python team and the circuit Python team so it is something that We do talk about but we haven't figured out how to Actually, you like agree on some of those things the hardware APIs is one of them and then workflows is the other so They're very MP remote focused which is a another which is a command line that you would run on your host computer to transport your files to a micro Python device and back but That has not been our workflow focus in our and we have a lot of workflows now That we try to keep somewhat uniform across all of the ports So I don't know what they think about Moving all of that So David says is micro Python upstream of circuit Python. Yes, and Dan is active Dan is another Engineer on circuit Python. He's actively working on updating Us to a newer version of micro Python. So we do occasionally what we will update again I think When I were walking to the office and we're talking about changes with micro Python and Changes with circuit Python and just like computer science in general, which is just a form of science Eventually, some of the same things get discovered or uncovered. I always like to think like a civilization went away What would be the things that we all discovered again? And I think there's things that micro Python is doing now There are things that circuit Python had to decide a long time ago like we had the little micro thing You know the way we were naming stuff we had it was something to say This is something that's only for micro controllers and I think micro Python is trying to move away from that now So I think there's there's decisions that eventually when you have to support different boards like micro Python wasn't supporting as many boards as us When they first got started, too, I think I think there's a natural convergence and that's why we can Contribute and do stuff, but I don't I don't know what's gonna happen in the future Good question Alright somebody asked if we can Support boards that we don't make tons in fact a vast majority of the boards that are in circuit Python are not made by Adafruit Anybody can submit a board. We have a tutorial which will be pasted in the chat on how to do that You do need to have a unique vid PID That's a requirement so we can identify boards in the future so you cannot gank other people's But we have open PID codes that Scott helps maintain that can get people PID codes for open source hardware But also expressive and microchip in Raspberry Pi all have a vid that they can Partial out PIDs you just have to ask them So yeah, we have a lot of boards. One of the things that I think is Really neat is that we we really let anyone Submit the board and we accept it just to do the bare minimum Which is you know get a photo to us and do the pull request and make sure it passes The pylons and all that good stuff, but that just makes means that we we can support it going forward and we translate it into like what 12 different languages Something like that. Yeah, it's cool So Steve's Stevens questions If I roll my own C3 or SG board can I load circuit Python? Yes, definitely and to shabu. Thank you for linking to the guide How much memory basically if it's an ESP you have enough The minimum that we have is that samd 21 with 32k ram and that's tight Yeah, I'll say the s2 the s2 without ps ram It's a little tough to do Wi-Fi things because the moment you start doing Wi-Fi You're doing a lot of your memories being used for TLS and Buffers, so if you're using an ESP 32 s2 get ps ram, but the ESP 32 and at C3 They all do all well boot and run code Yep So the second question is does circuit Python support Bluetooth on the ESP 32 so on classic ESP 32 with Bluetooth classic We do not support it We don't support Billy on the s's as well Or the C3 I think has it to We're we'd like to But the problem is is that it uses a different stack than the stack that we've used for Billy previously So our Billy sport really is on the nrf 52 840 And then three does circuit pythons for O2 over-the-air updates We have the web workflow, which is a network Like a in HTTP server that the device will present And You could also do the phone home yourself from circuit from circuit Python code But you we don't have a native like call-out OTA sort of mechanic within the core of circuit Python So you'd have to roll your own it's not built in Okay, and someone in YouTube asks our do we know now has great support for micro Python? Are we working with them to support circuit Python? I think it's great I think it's good that they're offering micro Python support for their new ESP 32 boards I think we have a PR for adding support for that board into circuit Python, but it was hanging I think like Melissa was poking at it, but I think she figured out what it was I think the SPI RAM was not set to be octal or something So we'll probably have support merged in this week or so and you know one of the one of the things about The way circuit Python is structured, which like again kudos to Scott for thinking about this so far in advance Is that it's really easy to add new boards with all the pin names and it just kind of magically works like as long as using a chip set That we support there is there's other than little like minor details if they're doing something well unusual New hardware comes in and it kind of just works magically and it in the board definitions Mean that you get all the pin names, you know the unavailable pins aren't In the board definition and so like you don't have any mix up And if they have naming that the naming comes through and if they have a default I scored C port We say hey, this is the default I scored C. So and if there's built-in hardware like a display The raffle shows up on the display. So there's a lot of there's a lot of stuff you get There's a big kitchen sink that comes in when new boards are defined So I think probably by the end of this week, we'll have that new nano One thing worth mentioning since it's like circuit Python happenings and it's been a year since we've done a hack chat is when Scott joins that was working on his own hardware company and we've always worked with makers who have hardware companies and It wasn't like a specific conversation, but it's just how when you do open source There's a lot of benefits that you don't really realize until you see it out there So there's people who run businesses that sell Boards that every single time there's a circuit Python update They get all those features added in because it just works as well. They've made their board So drop a new uf2 on there and you get all the features I think one of the best examples is the person does like a little mini pig looking board Every single time they do a new revision or a new board or pick a different chipset or whatever It just works. So if you're someone who's looking to not really focus on unending firmware forever with different chipsets you can focus on Just your hardware design and it's enabling a lot of makers to run complete businesses without having to remake and maintain the the firmware that was another thing when we were adding The circuit python.org pages it was like it used to be so hard to find the right firmware for your board And now we I think we I think we've solved that we really made it, you know, you get the absolute latest We now have artifacts on every pr It's good stuff And it's weird because like I said I mentioned earlier I just I just finished up this article about open source and when people start out in open source It's like yay fun. This is great and sharing. But then when money gets involved like commercial use I don't really like that. We we went the opposite from the very beginning You're able to make your own hardware and use all of this stuff and that's Probably one of the the best things about open source. You don't have to worry about getting permission signing in da's um, you can you can always fork it if something changes and Customize something for yourself. So yeah, I think it's micro pythons mit license. And so are we and I think it's I think it's great So I think since the last time we did the hack test, there's probably maybe a hundred boards that were added Oh my gosh, ish Sorry, what would we do a hundred boards that were added in circuit python.org? Oh easily easily So and that's like about one week. Yeah, so I think that's kind of cool And a lot of boards were also added with the blink of support so you can again you could run all those Libraries all those censored libraries all them will work on you know your orange pie and your onion omega and your You know banana nano whatever That'd be cool. Yeah, banana nano I think that's really shown how Good our api has been designed is that it it did port really easily too Into c python linux land And we got it Another thing a little bit circuit pythons all the board after start including the repository they get tested on every change If something breaks on your board, you know immediately. Yeah, like we're the the tooling is Intense but thank you microsoft for paying our ci bill. I know github. I'm sure it's like how much I mean, it's it's a lot of work because we build every single every pr We build every board and every translation to make sure everything fits and everything compiles and yeah once in a while like people have a new Thing that they've added, you know a new cool peripheral Or module and it's like we verify that it tests and builds on every platform But it saved us so much time and there's there's definitely times when I'm like, oh I want to add a new board definition instead of setting up the tooling on my computer I'll just do the pr and then like have dinner come back and then it's you know ready the artifacts ready for me to test I'm like, hey, thank you cloud compile So I think during the raspberry pi shortage when people were using other single board computers blink it was handy Yeah, definitely. I mean, I think that's one of the That's one of the perks of using microfiber or circuit by then in general is that you're the code you write on top of it Is a lot more portable Yeah, I mean you couldn't get pies and people were like, okay I still need you know I have this orange pie or this banana pie thing and like they were still able to run the things um hook up sensors um and You know not get stuck you got Some more questions in the chat. Yeah, this is a good one So aria asks, uh, if I control c from like code up high or main up high I get a ripple and all of my state's been preserved um Yeah, micro python has state preservation. We decided to do a clean slate That was that was a design choice that scott made early on It is a design choice and the reason I did it is because I wanted you to start from a clean slate like I I I want to minimize the amount of uh state that goes over Between uh runs so that you know, you're always starting from the same place And that was true with the ripple as well. Um my answer to like I think When the way that I debug is by print debugging and so it's not that As big of an issue for me Wanting to access state kind of in the ripple after after codes run Um, there has been some discussion of like debugger support Um, which I think would be a better option because then you could resume Like the problem with like bringing all your state into the ripple is that uh You can't resume back into your code that way. Um I mean, I think that the trade-off is that we have, you know, very fast Um, you know, when you save it we run and so like, you know, I'll often if I'm working on code I'll you know go in and um add prints or whatever or you know You know, like json debugging and then I'll just like saving it we runs instantly So like the the you know, the two-second we running is the the trade-off because If you think about it like again see python doesn't act that way I I I like I wish it did because I'm like And if it did, I think we would make it work that way But it's like we kind of went back to a lot of things were like what what is the thing that we're doing? Um, if see python doesn't have that behavior like You know and people are like, why don't you have like interrupts and threads? And it's like that does not exist in see python and it doesn't We're not going to add stuff That python is extremely hard to use and see python doesn't support like that's two two knocks against it Yeah, I think We might be talking about slightly different things python.ai. I don't know what python.ai does but We should be explicit because we didn't talk about this When we were doing micro python versus circuit python But one of the early things we do to circuit python is whenever usb writes to the file system will auto Stop your code running and rerun it again And that's something that circuit or that micro python is never done And so it would it be possible to repatch the micro python like command see state? Or is it like it's so ingrained like the state clearing because we like try state I mean we could we could make it work that way like there's a there's just a reset call in circuit python That we would not do but Oh, yeah, you could patch it. I wouldn't do it. Yeah, if you if you want you can add a compile time You can add a compile time thing and we would merge it. It would be on by default But like you could you could add it. We just have a reset function that resets everything I think you may you may find issues You'll you'll have to be delicate to make sure it's only when you're going into the rebel because Another thing that we do is we keep track of in use state much more strictly than micro python does Because we don't want you to accidentally use something twice Um, and one thing that the reset between runs does for you is it actually resets all of like the notion of what's in use Yeah, does micro python do resource locking? I think you don't right? Um, last last I looked in detail. It wasn't the case. It was like something that you had to make sure and manage Yeah, we do resource locking But that is what's cool about that is you can have an OLED display that has your ripple on it And is like printing out your debug state and you're using iSquared C in your program and you don't have Collisions right like when iSquared C is being used by the circuit python core to display on the OLED it, you know Halt weights and then it releases the lock Um, that was also a really really big project to to have everything and you did that very early you resource locked all the yeah SPI Yeah, those buses where you would like be using them between multiple things It is particularly handy for sharing with the core Which does happen in the terms of the The display stuff You're like, you know, you're playing audio and you're reading from the sd card But you can still access the sd card like to read other files It's just like, you know extremely hard to do right you have something that's streaming audio out of a wave file But at the same time you can access the sd card and it acts like a normal file system like it would on a computer Or like on c python, but yeah that requires a lot of work and that's part of the like the reset state management it's I mean, it's it's it takes a lot of work to make things look so easy And this is a good stuff for like the when you do the deep dives people should should come by because you Yeah, this is totally the sort of discussion we talk about and like usb host is exactly the same way like How do you natively support usb host when you plug in the keyboard? The ripple is like no no the key is coming into the ripple it's coming into the main Yeah interface. It's not just a peripheral We also worked with some educators new york city has one of the biggest school systems and they had this like magical Vision of like what would be great is a 20 dollar microcontroller that plugs into a computer That just shows up as a usb drive That you just save python to it and just runs every single time and you don't need any id to download And you don't even need an internet connection like it starts to like okay, okay, okay, okay And the circuit playground express with circuit python does that it's uh, it's possible to use a text file edit a you know main dot pi and You can you can be doing stuff now, of course you want to use id's and there's classes that have more structure than just like a usb drive, but like that's that's one of the things that Constrained environments like schools Um, and they don't have the best computers either. They can't download everything off the internet They just essentially wanted to edit a text file Actually one of the things that drove me really like not and that's what I was doing workshops And people would upload code and they would be like I don't know what's running Because it uploaded the binary to this microcontroller and they're like and you're like well, what's running on that? They're like, I don't know. I don't know if it's what's on my editor like it's it's you know, because it's this You know compressed state. What's nice about embedded? Um interpreted languages. It's like whatever the code is the file is the code that's running and it's like that That makes a lot more sense for people Um, especially when they're beginners, they don't get the confused of like what's running. What's what am I? You know, what did I save it? What's what's going on? So For students, I think I think you know circuit python micro python whatever type script all of it or device script All of it is an improvement for the convergence What's happening is the expectation that people are having that yeah Things show up as a usb drive to drag and drop firmware off like that's that's happening They think even the latest Arduino that just came out uses tiny usb That's one of the a different sponsored open source projects out there So it's kind of going back to like with earlier questions like where do you see things? You know coming together There's a lot of things that the users eventually need and want and I think that's where you're going to see Oh, like these are these are more connected here And it Tiny usb is a good example where We're seeing micro python adopt it for new stuff as well And Arduino the latest Arduino core also uses teeny and Arduino and esp idf and pico sdk are all All using tiny esp so even if we don't use like micro python stock There is more stuff that we that we share with them under the hood Yeah, it's a fully funded ate a fruit open source thing ate a fruit's name isn't even on it. I think so No, it's okay Well, because it was started before, you know, it was very early and it was started when when tech was But now it's like a full-time thing. I feel so many things and we get contributions from the community Lots of contributions, which is great. You know, it's like once you get a certain momentum People are contributing back. So I guess rest of yous is it Pretty much everybody except for the Well, actually even the big chip companies are starting to use teeny. I think so, yeah I was looking was it the I think Maybe it was the renaissance or maybe it was a circuit python mg-25 core from sci labs. I think they used teeny usb Yeah, they're like, I mean, we're not we don't want to develop a usb core that sucks Yeah, I mean I I think we should highlight that like it was circuit python that really made that switch, right? Like we had done usb stack stuff with atmel and I think with circuit python 3 is when I was like, no, I'm just gonna I got a switch to tiny usb, right like Like tack had done it, but it really wasn't being used anywhere and then and then You know, I was really wanting a cross platform usb stack that we could use on all of our devices and and so we You paid for me to spend the time to to move us over and That really I think gave tiny usb the The the time and and used to really get it polished up and working really well. I think companies it's funny It's like well, what can companies use? Open source stuff like this is the thing we put under our license that companies can use I know every other usb stack has talked to us about it Every other usb stack has the shittiest license It's like you can only use it if you're like best friends with st And you like you buy as a drink and like you are only using a chip It's like it's so I think everyone's redoing the same work over and over and over again I really like that kind of contract or an nda or five million chips or something something something Oh, and you found a bug and it's going to take six months to get it We'll never fix it And then you know every time like every every new you know Because if you were to work on usb midi and like usb midi is kind of like nuts Which I haven't realized. I thought it was like simple. It's actually weirdly complicated And like adding that to tiny Now on every single port so like mass storage works on everything usb midi works on everything HID and now usb host is also going to work hub support We have the usb hub support so you can like connect multiple devices And then we're at them and you can use them from whatever So, you know, it's interesting to use b is really like the it's like the shoulder that we stand on Stare shoulders of giants, but yeah, that was that was a huge amount of work that That really I think opened up a lot of ports Yeah, that's the toughest thing that's the toughest part like all the other peripherals are hard But usb is a nightmare to gotta get the workflow first You have to edit your circuit filing code. That's right So I do see one question that I missed in the youtube chat, which is From chris lopez says how painful would it be to use something like a micro sd card as the disk? I know I can mount it as the file system, but that's not what circuit python will mount over usb um We did actually try to add The sd card as a secondary lawn and there was some Weird operating system bug that tack got stuck on and then he's like I don't work on this right now I think it was mac But it could be fixed. Maybe it was a bug in like mac os we could go back and look at it But we were we were getting close to being able to mount it, right? I'll say by the way mass storage It's amazing, but it's not really designed for what mass storage became it was designed for scuzzy drives that would never get unplugged um, and you only had one thing connected to it and what's weird about The way circuit python works is of course you can have the micro python device right into the disk And also the operating system that you're connecting over usb and like scuzzy just is not designed for this whatsoever and that's why when you plug in like your Phone or your kindle it comes up as like this weird like not mass storage drive drive. It's called like the gadget um usb drive because there's just no It's just like the operating system can't deal with the fact that the The files might be changing due to some other micro controller writing to it. It's like totally freaky Yeah, yeah the shipper points out mt mtp, but that's not well supported on mac last I looked either Yeah, we've we've looked into it We did I think we got really close to the secondary lawn, but I think there was something that can I think again that the operating system was It did not like it If you mount if you were mounting it read only and you were changing files on it Like it freaked out the operating system and I think it even like caused some crashes And we couldn't quite because it's such a Bizarre to do I had to restart my computer yesterday because I was doing some weird stuff with usb Like my actual Linux computer Yeah, you can you can mess up usb enough that you got to restart Oh, I had usb so messed up that I had to like not only restart but I had to like shut down my computer I'll plug everything depower my hub wait Because like something was back like it was messed up and it was backpowering Oh, no, I have a good hub too, but it's I don't know something Yeah, like leaks through and like keep something on Yeah, so for the usb 12 it's fun Yeah, so the micro sd card as a disk through usb is something that's on our radar, but we've hit some hurdles I think there is a pending pr for it and there's probably an issue as well that you could follow for For when we actually do get it working. I think I think it's possible to get working. We just haven't done it yet Um, and I think one more you wanted similar for the web workflow as well um The other challenge on the circuit python side is that sd cards and and usb mass storage devices, which is what I've been playing around with um, those will be from Python code itself And that makes it really tricky because the moment that you have the workflow calling into that drive you're actually running python In like intermingled like multi-threaded so that that gets really tricky um And I'm not sure how we want to handle that so it's on our radar, but not something that's coming immediately and then Yeah, I found I found the lot. So yeah, tacked the multiple on request, but yeah, it was um We can do even look at it again. You never know like sometimes like things like, you know, magically I'll start working, but I think we might have to um, oh my god, sorry change what um, our expectations for like how the operating system Um, what what we're willing to expose the operating system, but yeah, basically like computers were just not meant for what we're trying to do here um There's another reason like, you know, when you have circuit python plugged into your computer, you can't data log to the internal storage While you're also writing from The computer because the computer's cashed so much of mass storage and they also write non-linearly um Again, it's just like what we're doing to this poor scuzzy protocol from like the 80s is Yeah, it's hilarious. Um But yeah Okay, cool One question one last question I see is any chance for zigbee support on things like nr 52 a 40 I think it's safe to say that a different from the folks probably won't spend that time But if somebody wanted to add it, we're happy to guide you and I think somebody added esp now So it's like people do add other protocols, but we haven't gotten to we don't yeah, we don't have the We're busy working on this micro SD loan problem. No, I don't know. Well, I'm doing I'm doing usb host but yeah Okay All right, we want to wrap it up. We've been here for four hours. Yeah, if folks have more questions you can go to the discord server um Adafru.it slash discord slash or the slash discord and then the circuit python dev channel is where we all Uh hang out and work on circuit python. So if you want to do custom builds and stuff, that's the place to go We also have a help with circuit python channel where you can get help just using it as well And other things, um, we met scott because we do a show every sunday called desk of lady aida So come on by la more shows all of the electronics. She does She has pink hair and And she does all over electronics. She says I do electronics. I indoctrinate you into like the woke philosophy. It's all there Come on by. Yeah, and we show what's on the more desk Then we do a great search which is how to find stuff on digikey on Ask an engineer, which is uh turns out later today We have ion impi Which is usually a new a new chip that or a new thing that la more thinks is really interesting and all of the New stuff we have going on. We have our circuit python segment, which is our python on hardware newsletter, which is like our collection of everything that's going on in the world in python on hardware Um, it's kind of the best time to I think do microcontroller stuff. Um, it sucked for a long time. I know that's a lot better So check that out just to look for the um project collection I think that's a big chunk of the newsletter that folks really like but also events and things um, you know Uh, donate to the micro python on github Yeah, because um, they don't sell hardware that much anymore And so I think you know that it's they can they really um can do much more work And they've hired people to add more capabilities to micro python. Thanks to the contributions Yeah, and they they do a great job of uh saying something has been funded by gap sponsors. Yeah Um, I I think that's really nice that they do that Yeah, and like for everyone out there because uh, you know, if you read hackaday There's a lot of things going on to microcontrollers. If you like to see things like micro python and circuit python um Support the company is the way you can, you know, buying boards is okay Um participating in the community is really good. Um, but open source communities make sure, you know, um that we're also Amplifying the contributors and being cool to one another it gets really hard sometimes. I think when you Um get demands or folks that are Being so nice. We have like code of conduct and everything and this community is um good But it's one of the things that's really hard. I think um, it it's literally forks communities So, you know a little thank you and a github issue or you know In a chat or something like these are all really good Um, or it goes a really long way. Um, there's there's a lot of a lot of people working on Python on order right now. So thanks to hackaday for having us very much appreciated And join me for my deep dive at two on friday's back Yep, i'm streaming on sundays scott streams me on fridays Lots of streaming and of course, you can always come by and ask us questions about uh, you know, you want to do stuff with Circuit python, um discord's a great place to go All right