 Hello hello. I think we're live. If you're watching this after the fact make sure and check the description below for on YouTube for time codes. Thanks to David in advance for taking those. We'll get going in just a couple minutes here, but I like to give everything a little bit of time to get get started. And it's time for me to pause all the video streams as well. So that's good. We've got some exciting stuff today. I don't want to spoil it. It's gonna be... I think people will be excited. How's the smoke up there? Not too bad. The windows open. It's just overcast here. So hi and bye PT. Thanks for dropping by. Thanks for letting me take over. Hi Dashipu. Hi Unexpected Maker. Hi Beata. Hi Hamslab. Hi Bruce S. Hey Gary Zee. I saw Ask Patrick W waiting as well. And Minnesota Mentat was waiting. Along with Dr. and Yanni. People are excited. I just adjusted the camera. Hopefully this is okay. Hey David. I raised my desk which means that like but my camera can't tilt down like quite as far. Oh great. A great photo of Jepler with Blinka. Awesome. I'm so glad that Jeff finally got to visit. Hey Andy Roberts. Hey Bruce S. No smoke. Just a bit of rain. Hi Dexter. Hey love the factory. Hi Keithy EE. Oh yeah Unexpected Maker. You're gonna be real excited. Oh let's check out these photos of Jeff here. Hi Pierre. Oops. Oh YouTube redirected it. Look at that. Jeff's visiting HQ this week and got to do his Blinka. Blinka pictures. Just so fun. It's also like super nerve-wracking. I wish last time I did pictures I had like taken it had it a little bit of alcohol and made it loosen me up. That's what my my partner when when we took engagement photos she was like drink this beer and then we can take pictures. Makes me a little loser. Yeah so this is the the photos are taken by the same person that does not drunk just a little less inhibited. All right so it is two minutes after so let's get started. I do have a hard stop today. I've got stuff going on this evening so I can't leak out past four o'clock too much so. Hands on says had a zoom session where the dogs on each side started barking. Bruce says I'm much better in photos as well. Yeah I don't know what it is. Okay let's do housekeeping and let's get this show on the road. So hello everyone my name is Scott and I work for Adafruit on Circuit Python. If you don't know what those things are thanks PT. PT is one of the leaders of Adafruit. So Adafruit is an open source hardware and software company based out in New York City. I work remotely for them so I am here in Seattle so I'm three hours different that's it's 2 p.m. Pacific right now for me. So yeah open source hardware and software which is awesome and then Circuit Python is a version of Python designed for microcontrollers which are tiny inexpensive computers that are in a lot of devices to do basic control stuff and so they're really inexpensive but they're pretty powerful for for the costs so Circuit Python brings Python to that and has a uniform API and a bunch of libraries and tutorials and all that good stuff. So if you want to support me and my work support Adafruit by going to Adafruit.com and purchasing stuff there. Lots of cool stuff always coming. Lediata who owns the company and founded it is constantly making really cool stuff so that's been neat. If you want to chat with me and a lot of others we have in the middle here the Discord server. If you want to join that you can go to the URL adafru.it slash discord that's where we do general development all week so you can follow along more closely there. This is a deep dive it happens every week normally Fridays at 2 p.m. Pacific that's now if you're in a different time zone it it's occasionally shifted to Thursdays at 2 p.m. if we're doing something on Friday that hasn't happened for a while typically it goes for two hours or more today will be under two hours well right around two hours because I have a hard stop. Hi Patrick. And yeah questions are welcome so if you have questions you can try to derail me there's some exciting stuff I want to show off on the mailbag and I just remembered I forgot to check whether the whether the overhead cam was working or not so we'll see we'll see that so I think that's it if folks have questions let me know the cat's not in here for those of you who watched before I think he got distracted with trying to get food downstairs and he missed his opportunity to come in here before I shut the door so no no cat today sorry but some other cool stuff okay so that is that um folks have questions let me know I did want to do a quick recap from last week unexpected maker has a question but it's going to wait for the surprise I want to cover just briefly yeah spook is not in here today so we won't talk about that spook is the cat I just wanted to say that the stuff that we worked on last week for the ci did get merged in and it looks to be working although there was one slight hiccup that had to do with it but if you want to see that you can go to distribute says oh no no cats we can leave sorry I could I could have coaxed him up here but I was like he was curled up for here earlier um yeah so I did have to do one slight modification to the github ci stuff so we had this matrix from Jason thing here and it was throwing an error it was throwing an error if uh if the list was empty so I had to add I added this additional check that says only run the build job if it's uh if it's not an empty list so yeah so this will only affect pull requests and if you want to see it's been really nice so far like we can see here here's a change that Dan did and if we look at the files are all in nrf and then if we see here like the checks is only 46 um so it only had to build all of the nrf boards again which is awesome and exactly what we wanted so that worked well um anything else for me I've been doing a lot of bili stuff um bili workflow stuff so that's in the works it's hard to talk about that because the apps and everything is still so new um so I'm still primarily working on that um somebody came up with a fix for nrf on gcc 11 so I'm actually on gcc 11 now which is awesome so thanks to them um and then here's the ci here's the the ci changes that I ended up with and I think this is basically what we laid out last week of like here's all the different outputs here's the file change thing and then here's the python script that takes in those changed files um yeah it's working really good and a bonus that I didn't I don't know if I realize this on the stream or not about this ci stuff but you no longer have to add your board to a list see this list of boards is like gone um because now we're auto detecting all of the boards um so it's it it'll be even easier and actually that reminds me there's a learned guide that needs to be updated um so note to self there's a learned guide that needs to be updated because I think that adding your board to the circuit python guide still would tell you that um did you measure the cpu savings with the new ci I didn't I mean it depends on like the the pr patterns right like it depends on how many prs can fit in that bucket of like running fewer jobs it's certainly good I think it's clearly a win it's just a I don't know how much of a win it is um yeah and pierre pierre says one one less step to create a new board yep and unexpected maker always has that problem too um for anyone that is uh I was just responding to the chat which made me think there is a youtube setting for how late what latency you're setting up uh that you're setting the stream to and I set it to low latency and I just looked today it looks like low latency does not allow for the auto captioning so if anybody here would like captioning on the stream um or you're watching this later and would like captioning on the stream it's like you watch the stream if it was captioned um let me know and I'll I'll knock the I'll do normal latency instead um because it's important to me that if somebody needs the the live captioning they get that so just let me know if that's interesting to you you can put a note in the comments or if you're in the chat right now let me know um so yeah that's something I'm aware of I think low latency used to auto caption and they changed it um which maybe I should try ultra low latency if if nobody says it hey Randall um didn't say how do you or Patrick I don't or maybe I did I know we have multiple metrics okay so this is pretty straightforward uh this code here I don't know I don't remember how far I got um but this is just doing some analysis based on the board mapping so port to boards and then board to port um so these these two mappings are for like oh we know we need to build everything in a board then we do that and then going from a board ID to a port so we go through all the files um and we say that if it's circuit by it's if it's a push to circuit the circuit by the repo then we just build everything um right because it's already set to all board IDs otherwise we set boards to build to an empty set and then we have these two patterns of like board files bold for board folders and ports folders and then we go through all the files if it's board file we add the board itself if it's port we add all of the boards and if there's duplicates it's not a problem because we're putting into a set and then if we end up all the way down we just do all the boards and then break out of it and then for every board we just have to map it to those three different build jobs the arm risk five or extensa although extensa probably should actually be called ESP depending on like how the build works if it uh if it's a risk five core instead so pretty straightforward um and it's been working pretty well so i thought i'd start with that just as a follow-up so okay so let's get on well pierre has a question says for my own fork before a pr does that mean that only my new board will build one instead of 190 i think so i think so so i think the way that i had it was if you're pushing to a non 80 fruit circuit python branch i think what it will do is only do like the last commit's worth of stuff um but actually try it and let me know because i'm not positive on that um my hope is that yes it would only build yours that was my intention but i'm not it depends on how that uh library that figures out all the changed files works yeah my intent was that it would only build the one it actually does one build for every port there's a job called the windows the windows job and that tests building one board of every port on windows and so you actually do get a build of one of each there but yeah i haven't actually measured the savings i'm sure i'm sure it's good we don't like github doesn't bill us for our usage because we're an open source project so it's not like we we see that for that all right let's go let's go on um let's see if the overhead's working oh that's cat cam cat cam without a cat okay it looks like the overhead is working well enough after i adjust it so i i made an 80 fruit order and let me switch it come on there we go lock sorry i didn't do this before okay so uh here we have uh some stuff that i got from aida fruit and if you don't realize that i do get it for free because i work for them um so first thing i got was a this hdmi video capture thing so this is a very basic not um not super expensive hdmi capture thing that phil was using for a while so it's like pretty decent but maybe not the best um it is only um it is only like usb 2 i was surprised by that it's actually just usb 2 um and so but i picked this up the reason i picked it up was because i uh want to do the the raspberry pi stuff and the raspberry pi stuff uh raspberry pies have hdmi output so i thought having this would be really nice to be able to capture the hdmi output of raspberry the raspberry pie that i'm working on um i actually did get a screen as well off amazon i got and i haven't tried this yet so there's not an endorsement but i got like a seven inch hdmi screen from elgato um that should be nice for like when i'm when i'm just like experimenting with it too so i'm i'm excited to get their work on the raspberry pi stuff um once 7o is out and the bilie stuff is not on me um that'll be good um and here i got just this it's a mini to hdmi converter again because the raspberry pies so that's that's it besides the big reveal which um is this and uh unexpected maker did call it it's a it's a dev board for the esp 32 s3 you may have remembered a couple weeks ago um oh doctor says it's it works on usb 2 because it's heavily compressed that makes sense um yeah so uh you know a couple weeks ago we had that really weird issue on the on the esp 32 s2 and we reached out to ivan and one thing that ivan said was like hey do you want an s3 and i said uh yes please and the and the fastest way to um the fastest way to do that as well is uh basically like they send it to ate a fruit and ate and then i make an order off ate a fruit and they throw it in for me um pierce says some people use these as opposed to connecting a monitor to their pi 400 not sure about latency but it sure beats switching wires around yeah um hey ivan thank you um yeah so this is a an esp 32 s3 dev board i have not looked at it and i have not um oh looks like i got the bag so there is three total i only got one um i believe jeff got one as well um so yeah i i assume i guess lemore would get the third one so i thought what would be fun exactly bruce s says time to get it working so i kind of have this theory that i might be able to get it working in an hour and 40 minutes because i hope that the esp idf does all the heavy lifting um and so i thought i'd see so that's what that's what i think i'm going to try to do today uh there's certainly going to be more work to do once it gets working but like um what like once once we get it building and stuff like that's a huge hurdle so like um if i can get uh if i can get the build working and the usb stuff working which should all be working hopefully from id the idf like i haven't looked yet but i know that we're using it for three which has some s3 support in it um yeah it should so long as set target is right but you need to be on a later idf do i have to be on something newer than four three um do you need the master branch of the idf i do not know um i honestly like you'll see i i have not even like pulled up the data sheet i haven't oh unexpected maker do you have um circuit python partially working here i'll uh lock it do you have a branch that i should start from oh come on the major work is in four four i mean we could change it but i'd rather not since we're trying to be stable latest master for s3 support okay i mean we can switch it um if that'll save headaches it just means that we may not want to merge it yet like these aren't super available um so i like we might just have a branch for a little while um that we can start with so let's just take a look at this i haven't even looked at this so let me bring the mic over here what do we see so we've got two usb ports uh there's no label on the bottom but um this right one is labeled you are and the left one is labeled usb so this is an improvement from the previous dev board the sallow where they only had the ur equivalent broken out um might need four three one so we we should be on four three one um because i did update based on the there was a silicon change in broke compatibility well i even would know it says i should be on master i don't know what version of silicon this is let's see so then there's boot and reset and then the ftdi chip so this is the thing that's doing the ur to usb conversion um there's an rgb led on gpio 48 this is a power regulator and then this is flash so this must not have any external psram i'm assuming i'm assuming this is flash and then this is the s3 chip and that's obviously the this is the crystal for it hi electric maker thanks for the tweet i saw it go out um m equals no psram okay i mean we have circuit by them working without it so that's good yes i did get an s3 thanks to ivan um got a few sent to ater fruit and i got one of them so we're going to see how far we can get um that's rev zero latest before production okay so let's go to this view and first i'm going to try to find a data sheet esp 32 s3 not sure which of the three boards you got was it different i can read something off here let's see s3 222021 that's probably the week and the year r2 m and p 147 000 something like that you hate data sheets all right let's see what let's see what we got here so we're not we're definitely not going to get i don't think we're going to get to the point of doing we're not going to do bluetooth today that's not going to happen right the goal here is to get a you get it building so getting it building would be a big step and two um getting uh getting usb working would be awesome so i have no idea like i have not done any prep work for this so we shall see um okay what do we got here technical documents so this is just the the top level tech technical documents but that should be fine um s2 data sheet do i have to get the data sheet some secret way it's possible it's not released yet nothing i don't necessarily need no online data sheet i'm not sure i got emailed one i can check my email i don't need it i could do it without it it's all just going to be chasing builders anyway um repel will be nice we're doing it live don't show in public yeah okay i don't i don't need it yet thank you so unexpected makers they shared it with me but we're not well we probably can't share it yet so um we'll do it without we'll do it without it shouldn't be too bad like it's really just going to be updating the idf and figuring out how to switch it so let's get started actually no first i want to do an overview so let's just go back and just read the blurb about it because i don't even know like how much ran there is all that stuff so what's it say it is a dual core extensa l67 lx7 running at 240 what is that is the s2 240 as well i think it is right let's compare it doesn't even say i think it is 240 it's okay i i can't get too distracted because then i'm gonna have less time to like fix build issues okay so it's a 240 megahertz 512k internal s ram which the s2 is like 340 360 it comes integrated with 2.4 gigahertz bgn wi-fi and bluetooth 5 which is bluetooth le which is awesome so we should be able to get b leio working on here which will be awesome 45 gpio rich set of peripherals and supports larger high speed octal spy flash and ps ram with configurable data and instruction cache all right let's just get going get fetch eta fruit get switch esp 32 s3 so at the end of this remote push whatever however far i get um so folks want to follow along feel free to do that um i have a feeling that this is going to be a lot of just uh redoing a redoing some uh let me switch to redoing a lot of the build stuff i suggest greater than zero megahertz ah and the s2 is also 240 okay but my hope is that because this dual core will run circuit python on one core and all the wi-fi stuff in the other core um which should effectively speed up circuit python oh and unexpected makers giving me reference to uh you think i need to know everything on stream i just faked my way through it um okay and we can i could delete this file because i'm done with it i was working on the so i think the first thing i'm going to do is i'm going to rename this directory all right obviously it's not just the s it won't be just the s2 anymore uh that should be fine i don't want to name it whatever micro python calls it i don't really want the s part in it either because um yeah like they call it esp 32 which i would really like to call it that too esp 32 you know what i think maybe i'll just call it esp how about that so let's move out of it and do you move get move esp 32 s2 to esp and maybe let's we'll just call it expressive because we have raspberry pi for the for the rp 2040 um so let's do that okay and now what i want to do is update the idf call it s3 well no because i don't i don't want to call it s3 because it's also going to work for the s2 and hopefully we'll also work for the c3 and the esp 32 so like there is a world where we get around to sporting the esp 32 and the c3 as well uh basically s3 is a good stepping stone for us to add bluetooth support and then once we have bluetooth support we can support the c3 and the 32 as well um so we're going to make the move to cmake ha ha no i don't understand cmake you're welcome to make the move to cmake i am not planning on doing that i'm going to do what i did last time and i know it's a pain to maintain but it's also very straightforward like it it's no i'm not going to it's more important to me that the build system is consistent across ports than it is with the idf um so we'll we'll parameterize the things hopefully to to do it but um can you make forever it's hung around a long time right so i'm going to see what remotes i got and then i'm going to get fetch expressive and let's just go to master let's should we live on the wild side there is no 4 4 release branch yet like that's what we would do otherwise we don't use we don't use stk board definitions usually anyway um and we don't update the idf that much either so like i understand why you would do it i'm just not going to there are reasons that i wouldn't do it so let's just check out master here get all the new sub modules it's stable ish so so we'll probably want to wait at least till four four is branched off let's go to into these two directories cmake uh these probably just need to be updated themselves no oh yeah i can do recursive i just don't necessarily like doing recursive updates because um didn't work deleted oh i just need to delete it though modifications see this is this is where remember git status is your friend i don't get it it are these files there or not component cmake cmake vendor component cmake cmake vendor c exception so it should be there get reset hard head okay i can do that usually i don't like to do that but maybe i have to do that in the sub modules we're green yes i don't even want to get going until okay so here we are and now we're going to get ourselves in the state so i just installed oh you know what i'm already in a virtual environment for my other builds so i can deactivate that do the install again and it's going to set up its own virtual environment alright looks like that worked so now let's do i wonder if the first thing we should do is well git status is not useful um maybe what maybe what i should do is i should commit at this point i should either commit or i should make like maybe i just how boring is that if this stream is just me getting an existing board building but that's probably the best way to go about it actually is to like update the idf do a commit i had build artifacts going honestly it's really informative i go ahead and find it informative okay so this is where we like this is what would be easy if we actually did see make um no equals looks okay um but the problem is like sometimes things move right so this this path here is now gone so if we do esp sleep but wait what was that um i installed a rust version of find that would be perfect for this rust cli find replacement fd okay so this is where i do fd and first so we're looking for esp sleep usually usually the file's not renamed it's just moved so that's where it is now so we just open it let's not do that one first this is in pin alarm so let's go to pin alarm and let me just close all these files i think i'm i don't think i need them this is all from the daily stuff i was doing okay and we're not in nrf land we're in expressive land and common how alarm pin alarm and sleep was moved to esp what was that hardware support i know folks are like oh this is so this is going to be so boring but this is programming when in doubt do a clean extensive esp debug helpers in pin alarm as well i am assuming that like the files have basically the same contents and it looks like it's building an s2.a file so that's going to be a problem for us when we switch to the s3 but we'll cross that bridge when we get there okay so we it doesn't look like we have any pin alarm problems now what we have now is a howl misc problem in twaill so that is going to be a build file problem like we had this big long list of howl platform underscore port so let's open this make file and all of these things that we shouldn't be doing but we're doing anyway howl port that's what it was hi fetidu when in doubt find a bigger rock boring is good means things work hopefully i mean like would i would i rather learn cmake or just go through all this cpu ll not learning anything i'm just doing it oh interesting okay so c3 h2 s2 s3 so for now let's just do the s2 but one thing we can do in here is we'll be able to um what we'll be able to do is we'll be able to put a variable in here uh in the future dylan says i know some people love cmake but man i found it painful to get things going with it yeah i've just not gotten over the hump like if i worked at a company that used it i think i would pick it up like i think i could pick it up it's just a known target right so now we have this list of um maybe we can write a bit of cmake to generate make snippets which you can include in your build system i tried to hook it to ninja i mean we're kind of calling the ninja stuff there should be a version of every script that posts to the right one based on set target the ship who says please don't right like i mean this this is probably boring to watch but this is like not hard work it just takes time and at some point like it works like we just don't we don't update it that much so it's not it's not worth learning a whole new system and one of the things that put me off about cmake was that like oh you know let me we're not doing anything on the hardware yet like one of the other things that turn me off about cmake is they have this whole programming language of their own and it's just like i don't want to learn this um so one thing we can do here though is uh that comes from like there's all these s2s here right um and i thought we had a list of libraries that we're trying to build which is those are binary blobs yeah so here here's the ninja command that we're basically using um to build stuff from ninja so we could just see like this probably moved as well probably already the most of it just probably got moved around so what we can do here is we're building the s2 and then esp idf then we have a build ninja and it's got all of this but let's just see if what do we think that ended up oh it doesn't exist you can remove it sure i can uh i even thank you thank you very much for watching i'm guessing that this linker of this ld goes away as well um what what will happen is that if we don't include something we'll just have a symbol that we don't have there's a good question let me uh Keith says would this stream be a solid example of how to add a board to circuit python uh adding a board to circuit python is much simpler much much simpler um i think maybe maybe unexpected maker is streamed to that um yeah this is this is more difficult than that um andy robert says can you talk about the architecture slash partitioning of circuit python on the esp 32 a bit how does circuit python work with the r toss and the esp um i would have been wondering if it would be easiest to have circuit python running on a core of an stm 32 with the other core doing communications so the way that we have it set up is like the esp idf gets everything going in free r toss and then there's the app or the main task or the app task i forget what it's called but i know where it is so in supervisor here in for the esp there's port dot c and i think it's at the bottom there's this um app main call um so this is where the the idf and it's uh our toss calls it calls app main and then we call our top level main um that we run for everything and then we have all this like you'll see that we have like free r toss stuff but all of the free r toss stuff is like contained within the esp port um that's a good idea an expected maker maybe you streamed making a new um making a new board definition in circuit python because keith the ee was wondering if what i'm doing now is like adding a new board and it's it's much more difficult um but yeah iven has a really good suggestion which is the linker script got moved around recommend you run a hello world build and check the linker arguments there yeah that's a really good idea um i mean there's going to be a lot of this as well getting a hello world working is is a is a good idea though too let's do that it's going to be less boring uh i have i was going to use a version of the idf that's outside look i exa no never streamed it not a bad idea i have three new boards coming so i can definitely do that there you go so keith you should watch keith the ee you should watch uh unexpected maker streams i probably have done it but i'm not sure when um all right let's uh do do i must have done the esp stuff on my laptop not on this computer i'm gonna make another check out of the idf that was my tab fully trying to be more of a feel for the whole setup there's a really good learning guide for adding a new board so i'd suggest checking that out as well it's much much easier than this you basically like duplicate the folder and then change all the settings i mean i know it sounds easy but getting circuit by them building is probably potentially more difficult than that okay so we're in the idf and i don't know how to build an example i'm useless with seabake that is part of the problem too hey look there's an examples directory hey look there's instructions um what's the what are the odds that i know how to do this i'm in it i'm in a different terminal change into the directory of the new example you'd like to build all right what are we gonna do there's a get started blink let's do blink or hello world hello world's gonna do let's go here and do idf pi set target target but i'm gonna should i tease you uh idf pi set target probably got a dash doesn't it esp32 s2 new stk config found oh am i not in the right directory i listed it but i didn't move to it hello world just print some debug output i'm actually gonna do i should do it on the s2 because i'm trying to fix i'm just gonna be such a tease aren't i i'm not gonna even touch the s3 by the time i get to the end of today we'll see it'll just be updating the idf which is the start make menu config yeah it's like really it sometimes it's hard to be disciplined like this of like oh i want to just jump straight to the s3 but like making sure that all the s2 stuff is working is gonna save a lot of time um yeah this git clone is i've got gigabit ethernet oh what is a good guide for aid of fruit requests on circuit python i don't know i don't know if we have a good one like a lot of the web guides rely on you um they rely on the higher level libraries to do it for you which i'm not a huge fan of honestly i don't i'm not huge fan of like the mag tag library um idf menu config i just think if you're wrapping everything in python why not just have python do everything why use cmake under the hood i mean obviously i'm biased okay sure build build build build all right looks like it built i wonder if we can have it do well so now we have our reference let's get it open or whether we just go back not sure exactly what we need to compare to at this point i think we should go back to i don't actually care if this works um i assume it works i'm just looking for the settings but i've got more of this to do i've got more just like replace stuff esp debug headers i'm gonna go back to that port i have it open esp debug helper i think that was an esp system i don't see it what i wanted out of build system is really like the challenge that we have in circuit python is that we build a lot of variations and i want to build system that can look at all the variations i want to build and then reduce like share the work for the stuff that can be shared but it's not not at all simple not at all a simple thing to do okay so that worked but now we're in supervisor usb you know what i think this might be a problem because i'm running concurrently it might be simpler to just knock this down to j1 yeah look at that these are the errors that we want to chase right now components include suck interesting that there's an s3 one but no longer an s21 unexpected maker says make to see make comparison i got micro python booting to repel on s3 in about 50 minutes i spent three days on circuit python and cold uh could not boot the firmware i built yeah but you know what i'd like to you to see you do any build stuff on any of the other ports in micro python although they've done a good like daemons that a pretty good job moving others to see make as well but like you gotta value the fact that it's the same across all the ports as well like that's it's not just an expressive world sock s2 include sock no such directory it's in try trying to include this so this is probably that esp hardware support include probably needs to go the other way yeah so we need this in our so we need another include path we could copy this from where did i go it's in esp system like if somebody wants to switch circuit python completely over see make i'll use it but zephyr is also using say make i know zephyr uses see make and they use kconfig and they use device tree like there's a huge learning curve to their build system okay here we go so the definition of something moved pc and t the driver include driver pc and t that makes a lot of sense too bad i didn't look where i was frequency in the frequency in and then the driver oh you know we may not want the driver we might want there's a separate one it might be that actually i didn't do this otherwise i would have done the full it seems like this is talking to the lower level of it so i'm gonna do for some reason i thought this is going to be a mailbag stream it is a mailbag stream i only got one box with three items in it rg is a ripcrap it is in driver this is probably i don't know i i'm super biased but like i don't feel like build systems work well for for circuit python well that that went worse not better maybe we need both i don't even know what makes the header work yes let's see what what have i missed talking about variations what's your take on on optimized builds for the samdy 21 take things out of the generic show and swap in keyboard specific stuff the idea of multiple versions isn't great uh i don't generally like them but for the sandy 21 there are cases where you really can't get around it um there's precedence for it we have multiple versions for circuit playground expresses so if you wanted to make a board death for it i think we would have it we would pull it in but generally i'm against it generally i don't want to have to worry about checking which version people have unexpected maker says you folk uh i even you folks have done a smashing job getting everything working so well in the idf now across all the different hardware and tool chains yeah i mean i i don't mean i'm trying not i don't want to reflect poorly on idf like i am choosing to not use c make and therefore i am choosing this pain that i'm going through that is not on that is not on this rest of folks mark says i'm i'm using c pi in a work project maybe i could spend some time moving it over to c make i would um if somebody wants to switch us over to c make i would merge that in but i would i want i would want c make on all of our ports like there's there is some make file mechanics that we've swapped over to that have like are good like all of the circuit pi underscore def stuff like it's uniform across all the ports and that's incredibly valuable like those are the things that we change far more than like the the stks that we're depending on um but yeah if if somebody came to me tomorrow and said i switched you to see make like i do think that that's fine like make has its problems too it's just like right now it's the problems that we know um yeah so i'm updating the idf uh i am actually kind of skeptical i'm gonna get to the point where i rg is rip grip it's a it's a replacement it's a rest replacement for for grip spicy bag it says i quit c make because i literally got a headache reading the config files unexpected maker says yeah i would have to be a total swap out that's so much work yes it is dylan says in c makes defense i think they're trying to get away from all the all caps yeah and everybody zephyr and esp idf they wrap c make in python so like why does c make need to have their own custom language if everybody's just wrapping it in python like come on folks we should be able to do this in python we shouldn't need a new language i think whatever a solution people did come up with like you would want to you would want to um you would want to interoperate with c make let me try to finish my thought all right well this frequency in stuff is kind of throwing me for a loop interrupt handler implicit declaration of function this okay where is this yeah so it was renamed but i bet so it is in components driver it's just got the peripherals prefix removed 56 and i if i had the guess it's also removed mrd in that group number timer number so this is still happening i mean it seems like it was the peripherals prefix that was removed what are good get tools to answer the question what did the variable get renamed from i don't know i mean one thing i could have done is like look through basically the whole history to get an idea of what's changed um and i could look at the history of the files that these things are in but where did this come from this is my process interesting oh is it a private api now components driver sorry there's no cat today ninja and python yes you want to know what i want to call it i bought the domain bare metal ninja bare metal dot ninja i thought about it this is something that i would like to do at some point hi michael i don't know if i said hi you know i don't recall having such a prefix yeah oh you know what that's probably what it is it's not that at all we have a peripherals directory that's my problem these are our things these are idf things that's why uh thanks for speaking up i've been triggering my brain to be like oh that's us that's why it's there must be some other problem then there was a thing about somebody getting chastised as a senior on twitter there was somebody who was a as staff software or senior software engineer and somebody was like you shouldn't make silly mistakes like that and i'm just like please you think that senior engineers are characterized by their their ability to like write something perfect the first time like that is not how it works um okay so what is device here let's start 84 i just want the fresh version of this file i just i went the wrong direction without all right that's much simpler so let's see frequency in 40 yeah let's reload it so this is where we're directly talking to it so this is going to be at the hardware level so we need to figure out where that came from like that's the rabbit hole i went down that was weird like it's usually like that's a low level thing that's a macro that gives the type like this looks close like maybe it's called something else even seniors use a cheeky stack overflow from time to time yeah i do all the time this has got to be really painful for you i'm sorry you put this whole system together and i'm just like i'm not going to use it all right let's include that and again we'll just do the the s2 version for now so so we'll similarly probably just do a search for usb 32 s2 and replace it with like whatever platform we're on uh i got ag in my fingers still timer group struct that's what we want let's make sure we have it here i wonder if this is all early stuff maybe you feel got that rename yeah it looks like it did you don't have to help me i can figure it out i feel so bad not doing it the way that i'm supposed to i feel bad and yet i'm still doing it i shouldn't say i feel that bad about it components sock is b32 s2 timer peripheral although we want to include timer oh okay yeah so it looks like it got switched well maybe it got switched to a composite or whatever these are called in clear timers 62 64 has no member t1 t2 but i think it looks like it got renamed oh no oh okay it has the ink clear at the end of it i don't know i like like stuff like this is kind of painful to go through but the renames generally are better like i i understand why things are renamed when they are nice mark has some rp20 40 boards with circuit python on them i really want to get back to the like um i would like to get what was i gonna say get back to the gameboy cart i i know what i want to do with the gameboy cart now i want to put an rp20 40 on it and i want to make it thick so that you don't have to put it in a cart um what do you think this is probably just tx alarm so that's line 66 let's just assume that's right we're gonna get another error maybe or is that it for some more water i should have done j32 i'm gonna try switching my audio to a lapel mic because i think i'm bad at like getting the keeping my face in front of it oh protomatter update that to protomatter source 32 you get zero bonus points for working the first time i know i know it feels good i don't trust it when it works the first time tx what was the other one pink ladies that sounds fun what did this change to oh did i lose the file where was i looking at that here we go all right it's probably a neighbor of tx update x update update so it's probably low count low probably tx low dot tx low maybe i have a box given to me by espresso that says esp 32 c3 dev kit m1 is this going to be useful so uh potentially um this is the first step to c3 support as well i mean i guess not but i would do it here as well like all of this like reworking of the build system is going to benefit the c3 too the c3 as well um okay so let's just delete the libraries that it can't find from the build and we'll chase down that list comes from the list comes from things that we can't find at the link phase so i thought we deleted the esp 32 s2 one already but i guess that's there's two spots it's here what we have i thought it was in the second spot honance link honance esp wi-fi wi-fi we'll be ready for uh the idf44 hey johnny i have an s3 i also have a c3 i also have a c3 but that's not what i'm working on because the c3 doesn't have native usb so s3 is the better place to start uh esp 32 s2 if i look for that i'm gonna find too many things maybe this one goes away library must have been renamed no such file or directory okay so we're we're to the point let's clean and just build once more to double check but this is what i've been was saying we probably wouldn't have is that our uh our though the linking process changed so we're gonna have to update our copy of that and there is some stk stuff we're gonna have to change as well but we might be able to ignore that okay so this is the the linker script generation stuff with c3 rev3 having cdc working for flashing now any plans for mass storage support my understanding yeah ivan says the c3 usb is not programmable it's a fixed function peripheral which knows how to do cdc and jtag only so no mass storage flashing support on c3 i'm afraid yeah and that's exactly why i'm like more interested in the s3 here because the usb is is like full-fledged s3 bono asks since the esp 32 s3 has two cores is threading going to be included in the future it will be included if somebody adds it but i have no plans on adding it the way that i would treat it is just the second core will do wi-fi the second core will do wi-fi and bluetooth like all the idf stuff and then maybe we can live on the other core um but i don't i haven't set it up that way like probably to start we'll just all run on the same core there's an app for that too which makes it behave as the usb the cdc cdc mass storage and jtag bridge okay so let's um go this is the point where we wanted to look at that project that we were doing so first let's say where's these linker these ld files where is that in here okay so here's the list these are these are the this is the linker command line arguments and i think that's what um yeah so the link step is saying like hey i can't open this linker script file esp32 s2 out yeah so this stuff is what's gonna change so we need to look for the ld files in the hello world project that we did and so i'm gonna add a new folder to the project go into my espidf examples get started hello world and i'll just open that and then there's this build directory and build ninja and dash l dot ld okay so these are the files that it makes ld gen system that's not where they're added to the flags but i think that's what this is um i'm gonna double click this so that it stays open which it's a lot i have a love hate relationship with that feature um but if we look here we can see this is the dash t stuff so can we find the top of this so this is definitely the linker phase yeah so link libraries blah blah blah and then i'm just gonna snag all of these and start there oh there's more let's try that let's go from there okay so i'm gonna delete all these i might stash these non those things elsewhere this i'm gonna say components esp rom esp 32 s2 ld so we already have that 330 got 30 minutes left and then i am done so just did this one linker scripts are interesting i think building c is hard what is dash l i think we need this we could delete it and see if it works or not but clearly we needed some of them oh you know that might be location that's where it's looking for because there are other flags that we had to add i don't know let's see where we are hands up says l is to specify an additional path to look for libraries dash t so dash t i think is the linker scripts so ld files or linker scripts um mark says that dash l is the live directories as well hi anthony pierce says it's a good idea to have wi-fi blam one core and circuit by the code on the other and rf 52 is only one core and the nordic soft device uses the same core at a higher higher priority less time for user code with lots of beli comps yep any reason you're not using cmake yes the reason is that the other ports don't use cmake so i would rather have ugly make in all of the ports than have cmake in one of the ports because we have like board level configuration stuff that uses the make system that is uniform across all our ports so i'm i choose to be in this world of pain so that we can have consistency across all of our ports so i said if somebody wants to switch our entire build system over to cmake i would take that but i am i do not know that line 160 oh i think i just have an extra one so yeah no such file or directory so i think this is a case where um system like i bet we need this here that makes sense see that fixes it there's the inversion oh it's doubling nested oh look at that i think that's what ivan was telling me the top level oh for all these probably thanks mark both mark and ivan call it let me know that so the idf is doing all of this linker generation linker scripts generation and so that's why they're in build still most of such file or directory i mean maybe maybe i just need like this this has double idf and this has double idf let's add it here these could be fixed linker scripts so those could probably stay the same no such file or directory sections dot ld okay so this is going to be in um i probably have to build it yeah we build the we build the esp idf stuff and doubling nested esp i think you should do a session using the live share feature visual studio code so some people can help code along with you that's worth a shot i don't really like vs code it's too noisy for me but it could be fun okay so i think we do have this ninja we have this ninja command where we build stuff and i suspect that we need to build that like i think i deleted an ld rule so if we have our build ninja up and we just look at like let's find sections ld there's this let's see if that works and let's do a make clean again so i don't trust it diger says i'm wiskot i mean he's just a blind text fan it just gets out of the way and i can get on with programming yeah exactly as patrick says yeah so keithie says what aspect is noisy and what does your editor do differently and ask patrick w says vs code has pop-ups open a file with some extension clippy shows up and asks you to help yeah yeah so it's that plus the like auto analysis stuff that just like causes everything to grind to a halt um bothers me too you can silence vs code so i understand that i can silence it but it doesn't by default and sublime text is very fast like that's the other thing it is very snappy so i am perfectly happy with sublime text and you all can be perfectly happy with vs code and there's nothing wrong with that just like i like sublime text i use sublime merge as well um as patrick w says i was summarizing scott on that i love vs code and all the auto stuff but i don't code all day like scott does i think it's also just like personal preference right like it's fine like i've just never been in a world where i get a lot of help right like i've never really done visual studio code stuff and i think that i think people i understand how it would be beneficial but i just have never been there hi dave sleep well how far did we get through this linker list uh not far i wonder if we're gonna have to do the same thing for all of them like if we just look for ld gen there's just output sections maybe i'm missing a location fd esp 32 s2 rom there it is components esp rom esp 32 so that would be yeah so i think these ones i don't need them i think i got a little overzealous i think these ones are the ones that don't get built because they're rom so what what these are characterizing is uh the stuff that's fixed in the rom or or in the libraries that are already built for you i'm no longer happy with emacs the version i installed in my brain is from 1990 patrick says maybe we need to add an faq to the deep dive repo sure keith says i'd code with pen and paper if my computer could use it id's have so many learning curves and i've never had motivation to figure them out yeah like sublime text can do a lot more than i'm using it for as well but i i don't use it for that so okay so here's the case where we're like we're not linking everything in that we need to be linking um and so i just like take this and i say rg that and that will find it um what did i find it like esp fi there is a deep dive repo yes so patrick created a um it's the deep dive notes repo um is what patrick's talking about so if you go to github.com slash adafruit slash deep dive notes uh all of the notes are there and patrick has automated the ability to like click the time codes and so that'll take you straight to youtube um at the time code that that is for um which is awesome and that's that's the way you can search the time codes across all the deep dives that's why patrick did it link y'all to that um okay so i've got to figure out what i need to link you know i deleted that fi thing i wonder fd all dot a oh boy i think i matched everything uh fd star dot reg x parser what is what is the end of a this oh dear how do i find all the da files back slash b for the end find i'll do it i'm trying not to use find but it it did work that is what i want this is what i want here um where did i delete that from i definitely deleted it from somewhere i deleted it from where was that list i had a list of was it this list or the binary wi-fi blobs list esp components esp wi-fi esp components esp wi-fi here but it looks like it must have been moved to esp fi so let's just go like this we can call it binary fi blobs although i don't think there's that many areas is there there's just the rtc actually let's just add the one oh and i picked i picked the right wrong one wrong white one uh i picked s3 but we're not there yet we're not there yet and we're not going to get there today sorry folks i teased you i don't think we're going to get to that s3 today but i will commit this all and you can follow my branch the tape is there um patrick is asking whoever put the tape on these for the standoffs the tape's there so that the pick in place can pick it up so they come they come that way awesome okay so it's still undefined reference is it circular i feel like this list is less um less long see i thought that it would be in that file there's no generic i don't see a generic vibe fi what is the command to list everything in something extensa i know there's no file what's in here i forgot what i'm looking for nm yeah that would work too where do we think it is it's like what's the magic indication for me to just do that on all these files i probably have it somewhere like maybe it's just from here like maybe it's just something we're building like esp5 disable is like like there's rom like this library is referencing something that we can build so components esp source esp5 oh you know what i bet it's here p5 did we delete it from there david's feeding me all the commands commands hey oh we got we got output that's good news do we think it works i'm gonna have one right here i don't think there's anything important on it i think i missed it we have a u of two circuit python ports i was like where's esp32 expressive unexpected maker where you have to copy here fingers crossed this is a good place to stop i'll ship it either way they're not copy over no it's orange hey oh we have a circuit pi drive we have rebel no pull up but that's fine now transition to this three in seven minutes i'm tempted i'm actually tempted uh okay so let's commit this first um i wonder if it's just a huge search and replace um git status git add everything git status git add protomatter git status oh crap okay so gotta go i do you have to stop soon get add this i don't know if i have my own protomatter yet so let me make that this is enough success for me today i didn't know if i would have to update the idea for now i was thinking i wouldn't um myself but my branch will be pushed publicly shortly if anybody else wants to try it this weekend you're welcome to uh i will not be working on over the weekend maybe not even next week okay git push ten new p id f 4 4 yeah we can do this as a team effort um the same work would have to be done for c3 so if you don't have an s3 uh although i guess bluetooth won't work but you could do your your stuff um okay so there's one other thing that we have to change because we're i just pushed um to my copy of protomatter i've got to update git modules as well for protomatter um otherwise oh so this is the sort of change that would cause you to have to do a sync the git sub module sync all right so we've got everything here and now we can do a uh okay i don't care about that um switch to esp idf master uh it'll become four three or latest for s3 clear esp 32 yeah i'm not gonna i'm not gonna have a chance to try s3 it'll be 4.4 maybe at some point i'll probably this probably this commit may not even make it to the main repo oh did my my formatting did it i don't care about my formatter git push 10 new esp 32 s3 okay so yeah i mean i think worst case next week i'm gonna do more beli stuff i gotta i gotta work mainly on beli but um i would like to i don't necessarily want to get in the esp 32 32 s3 rabbit hole but i would like to get it to the point where the usb works i would like to do like i would like to be the person that does all this build stuff that we're gonna need to do but i really do want to get to the raspberry pi as well and the s3s aren't generally available yet although the c3s are but that would require beli i o and i don't really want to do beli right now um because i'm in that land and i need some time away uh but let's i'll link link you all to it um and we can get that in the notes same idf work has to happen on tinyo too i bet it would be simpler um dagger asks what are you doing with the raspberry pies i want to get raspberry pi i want bare metal circuit by thumb on the raspberry pi on the broadcom chips is my goal okay let's do housekeeping on the flip side um thank you all for hanging out uh let me switch to my video how's the wheat balance board it is sitting on my floor still i have not done anything with it i warned somebody i'm working with on another project for the the washington state broadband stuff i was like i don't quit things i just stop working on them uh so that's the danger with me um okay so uh thanks all for hanging out thanks to ivan for getting uh ate a fruit a few copies of these s3s and thanks to ate a fruit for sending me one of them um thanks uh to unexpected maker for sending me stuff uh back channel as well um i'm excited about this chip it's it obviously it's not a super high priority for me uh because it's not generally available but it's good work to do and uh this is kind of the hardest work to do and so getting that out so that people can build on it is is much makes it easier for other people to contribute um so if you want to support me uh you can go to ateafruit.com and purchase something there ate a fruit pays me to work full time on circuit python which we saw just a little bit of um and uh yeah so deep dives uh they're typically two hours just like this uh sometimes we have a hard cut off at four like we do today but generally we don't uh generally we also have a cat in the cat cam but he's not in here with me today he's fine nothing wrong with him he's just downstairs and um he might be getting away from this open window that's kind of cold uh what else um thanks to david for taking notes thanks to patrick for getting the notes in the the shared repository um i might be a little slow on the description updating the description since i'm going off to do something but i'll try to do that by tomorrow um next week let me double check my i think next week friday is fine in fact i'm almost 100 positive yeah i can i'll next week's on friday as well um so yeah i do want to do pi stuff so we'll see i would like to get the s3 knobs a turning i'd like to get s3 usb going but maybe not do all the beli stuff so um anyway all sorts of exciting stuff i'm planning on doing some streams on the raspberry pi stuff which is my first foray in the cortex a level stuff which should be really interesting uh probably some usb debugging there as well uh because we actually have to start in tiny usb not circuit python um but yeah i can just keep talking and i have to stop so thank you all again um thanks david thanks to patrick and thank you all for watching uh we'll see you next week 2 p.m pacific here on the adafruit server support me by going or if you want to join the discord which i forgot to say uh you can go to the url adafru.it slash discord and join us there all week long with that i'm out thank you all uh have a great weekend and we'll see you next week