 Hello, gonna get going here in just a few minutes. Wait for some folks and I will check that we're going. Looks like restream is going and it's happy. YouTube is going and happy. Great. Hello everyone. Like I said we're gonna take a little a little bit more time here. Let me just double check. Yep. Tucked to this window underneath. Now I gotta sneeze. Here I actually I can eat this. It's there. My sneeze is lingering. All right. Say hi in the chats. Make sure you can hear me and see me. I know there's a little bit of a delay. Hi Kirk. Thanks for dropping by. We're a little early. Hi Eric. Looks and good. Sounds good. Thank you. Thank you. I think this is blurry but I'll fix it soon. Oh and you can see like the refresh here as well. Fancy. Give away the the plants. All right one more minute and then we'll get going. I love the factory. Thanks for stopping by. I started a little early too so that's why I want to give folks a little time to realize it's whatever time it is in your time zone and that we're probably going. I'm excited for weekend. 11 o'clock in Paris. Gerard. Thank you for joining late in the evening. I try to be asleep by 11 o'clock now because I have a kid that gets up at 6 30. Like this week has been consistently 6 30. It used to be we get lucky and you do like after 7 but this week it's been consistently 6 30. Hi Beata. Hey Johnny. All right then what one minute is up so I'll get started. Hello everyone. My name is Scott. I work on circuit python for ate a fruit. Circuit python is a version of python designed for microcontrollers which are little tiny computers. They're also inexpensive. Here's an example of an ESP board and then under this tin here there's a there's a chip there that has RAM and a CPU and and a bunch of peripherals. You can see here that it's labeled as an ESP C6 which we'll talk about today as well. Hello David and DCD as well. Ate a fruit does open sourced hardware and software based out of New York City. I work remotely. I contract for them doing a circuit python work out of Seattle. So if you want to support me do it through by or by supporting ate a fruit they treat me really well and have really shepherded circuit python along which has been great. So you can do that by going to the URL ate a fruit.com and then if you want to join the chat that's in the middle here this is discord and the lower one is YouTube and the middle one here is discord you can join it by going to the URL ate a fru.it slash discord. The benefit of that is the chat stays around it's not tied to this video and we also have circuit python dash dev on there which is where me and the other circuit python does discuss the work that we're doing on circuit python. So if you're hacking on the core which is something we do on the stream a lot that's where you can get help as well. There's also help with circuit python channel for just help with circuit python in general. So as always I'm happy to take questions I like to make myself accessible and answer questions that people have about electronics about circuit python all that sort of thing. My kind of tentative plan is to start with an update on the IDF merge which is last week we started merging in 5.1 and I spent the week working on that basically. The 5.0 PR just got merged in today which is very exciting and I've made a PR for 5.1 so this week was a lot of finishing up what we started last week and then testing it on the ESP32 C6 and H2 which are two chips that are now supported by the IDF 5.1. So that's this board here is the C6 this is actually a sample one that they sent me but I also have another slightly different one. This one for example doesn't have the sample it's a it's a mini instead of a regular module and I did look at the the RAM kind of version numbers and they're the same so I was I had an issue and I thought it might be the sample being older but it wasn't it was a another issue. Hi C Grover. So Taya says is it deep C6 time? So yeah so I got both H2 and C6 working. If we want to cover it I figured I could just go through the PR and cover all the changes that were made in the PR. H2 is a little interesting to support just because it doesn't have Wi-Fi so there was some like stuff I had to change in Circuit Python around that but all all in all it wasn't too bad. 5.1 as we realized last week was not too bad and then the C6 and the H2 support were not not too tough either. So in terms of stuff that we could work on you know as always if you have questions please ask them but maybe we'll do the PR and then I have two things on my desk here one is RGB matrix support. So here is a RGB matrix I got going and I think Micradev who did most of the 5.0 work said that they turned it off because it wasn't working on 5.1. So one one task is to re-enable it. I filed an issue about that this morning. So that's one thing we could work on is testing RGB matrix with 5.1 and doing any fixes to the underlying protomatter library to do that. The other thing we could do is what's on the overhead here is Jeff has been working on what we call dot clock support so there's these really nice displays and this is another one although this one's this turns out to be a sample that doesn't work that well but this is a four inch square display and it's 720 by 720 which is more pixels than we normally have for the like spy displays that we have. So I had to update that code for idea 5 so I was testing it and I confirmed I do get pixels here the colors are wrong but that's because this is a sample with the wrong pinout I guess. But this display here should have correct colors but it requires an initialization sequence that is not super easy to to do. So there's work I could do to get this going which I'm a little interested in and then there's also the RGB matrix stuff which will probably be more hopefully more similar to the work that I did updating the IDF but we'll see. So Tyeth asks what's the difference between i8080 displays in the dot clock parallel? I was hoping to add an i8080 based board. I'm not I don't know details about the intel parallel displays um yeah so that's the that's the short answers I don't know. Dot clock is a is uh where it has like hsync, vsync and like all the picks all the bits of the color all in parallel but Jeff's been doing most of this work and I haven't dug super deep into it. So the the short answer is I'm not sure and I don't know what the difference is and that's part of the reason I'm kind of like I don't really want to do that. I feel like getting this initialization sequence stuff could be a little bit of a pain. It's kind of like one of those magical like when you get it right it works um and I I did try like some of the demo code from Jeff but it didn't come up so that's that's a little bit like oh there's there's more work to do there. It's a little tricky because the initialization sequence is done it talks spy to the display but there's not enough pins from the esp so you have an i-squared c uh GPIO expander kind of that bit bangs spy for you. So that's a little tricky. Let's start by going we'll go over this pr and we actually should check the uh check the uh oh I was gonna say the ci but I can see here but the ci passed which is great um so this is the pr for those of you following along it's 84 24 and this is the 5.1 update so I figure I just do a quick like go over of it to kind of like complete the story that we started last week. Yeah Beata says GPIO expander ouch yeah it's um it makes sense in the sense of like those pins you only need when you're initializing but it it's like definitely more complexity and that's the challenge with these dot clock displays is that they just like they're parallel so they take a lot of pins um but they're like much higher res and the other the other thing is that like unlike the smaller displays the the smaller displays have frame buffers so they store all the the pixels whereas these dot clock displays um you have to send the pixels every frame all all of the pixels every frame update so that means that's why it's on the esp 32 with ps ram is that you use a huge chunk of the ps ram for your frame buffer and that's kind of a limited by knowledge I haven't done a lot of work with it I I kind of just like interpreted the api to the new version um all right so yeah if you have questions ask let's just go over this um I don't think it'll take too long so I made just kind of a like a few notes about like what the changes were from so h2 is the first esp without wi-fi so we had to like I had to make sure that the builds have worked without wi-fi okay um there was one thing about where the mac address was located because we use that as the unique id um they updated the compiler so the code size grew a bit especially on the c3s which is risk five um so heads up uh the easiest way for me to fix that was to disable b e l e on c3s with too little space um I did that because it freed up a bunch of space and the beli support on esp is not complete um so generally people aren't using it is my impression because it can't do particularly beli h id I think is one thing that people really want to be able to use it for and unfortunately we just can't do that on esp yet um there are a couple fixes for compiler errors it's updated to gcc12 I think we saw this when we looked at the migration guide um the adc and the DAC drivers were updated to a new api and the c6 is only supported uh in the new adc api so I just I updated that and in fact that's one thing we could do because I never actually tested it I rewrote the code but I never actually tested it should I admit that um please please please if you want to help uh test out the absolute latest builds and find issues because I I really I was thinking about this I am not a great tester I don't have a very good test discipline but I am I like fixing things um as long as I can reproduce them so uh this is where other people can really help um is is by testing um and people helping reminded me that I did want to talk uh this will be a tangent but um for those of you who who uh know catney is one of those folks that has been a part of circuit python for a long long time and today is her last day working for Adafruit so that's a it's a bittersweet moment um I'm excited to see what she does next but she's also a huge part of what makes Adafruit uh and circuit python run um and she joined I think in 2017 so she's been like around the project a long time um and and does a lot of the community work so I just uh I wanted to say thank you um and it's gonna be a different world without catney and circuit python so uh we'll see I wish her well I'm excited I'm excited for new things I think um it's always a generally always a good thing for for uh new experiences and and to do what you want so excited for excited for catney to see what's next uh there I brought my own tangent um but it is something that I wanted to talk about and uh it really didn't make me think of like oh you know like what is circuit python without these people that I kind of just think of as core people to circuit python um and she's one of them okay so going down this list the last thing is uh c6 and h2 have a new rtc peripheral designated the low power always on thing um so in places where we like talk to the rtc peripheral directly we had to I had to switch it to the the lpa on so we'll see that too okay so it's 113 files which I think the 5.0 was 5.0 was um like 300 files so this is pretty good so um one is okay so here this is changing sub modules so we're using circuit python dash 5 1 oh now I got it that time so um okay circuit python 5 1 so this is changing where uh what version of the idf we use and there are a couple fixes that are in that branch that I had to do for 5.0 thank you dcp uh and then uh this is actually a correction we were using the esp32 camera our fork of it before we just didn't have have the git modules updated correctly um okay so here we are to the make file you can see we're adding the c6 and h2 targets and marking those as risk 5 as well um there's this weird thing that really annoys me um where the bluetooth kind of blobs I think that are used for s3 are the ones that are on the c3 as well and they don't they don't have separate directory passed for the same they just in their cmake like change it to the other thing so this is like making the bluetooth idf target and you can see we hear it you we use it here on this include only which is silly um some includes moved around so i had to update this they did a lot of this like split the driver apart stuff um this is all stuff we wouldn't have to do if you were using cmake but then again like it's not too bad it's not too bad to do um one thing that's weird about the c6 is that they have regular rom um they have full new libe in there not the nano version so there's a there's a new libe and then there's new libe nano which is meant to be smaller but in the c6 they they they built the the regular version of new libe and then put it in rom and so if you tell the build to use the nano version it actually uses more code space because then it's using the ones that it compiled it's not using the ones that are in rom so that's what this is doing is that saying like for everything but the c6 do the nano stuff um this is a a change that came with new gcc which is changing the architecture string for risk 5 um here's two sets of rom blobs so these are linker script files that tell the linker what symbols uh the rom has to use um and you can see here is for c6 and h2 and these lists are only based on what uh was missing in the compilation there might actually be more rom stuff that maybe i should look at that could save space too um insert a libe m i had to change so we microbyte then has its own version but it didn't have float like i couldn't get float working and so uh like not not float floor um and so i had to i just switched it to using the regular libe m instead um the c6 and the h2 use this use b to serial j tag thing as well um so this is me uh factoring it out to the make file from the header file and being able to use it on what what stuff we include um this was like not the c3 gets this p count and touch peripheral stuff and i just uh switched it to doing some other make defines uh blah blah blah i factored out the binary the wi-fi binary blob stuff so that if uh circuit by um wi-fi is off it just won't include them that's what this is doing here as well so these are like the idf components we need to link in when we have wi-fi and then this is a trick that i found on stack overflow for basically mapping um the target to the ble implementation um is that you do this fancy like macro kind of thing where you where you're reading the ble info of the idf target and then saving that as ble info it's kind of a little weird um but it's i think a pretty elegant way to tell it which one of these three that esp 32 the c3 version which is also the s3 or the live ble which is the c6 c2 and h2 i think um i did do uh c2 in here a little bit as well even though i didn't test it because i don't have a board but like where i was like looking for for per target stuff and and if i ran across the c2 stuff then i put it in there as well uh here's another example of like where the bootloader offset is for h2 and c6 i didn't do c2 i guess um esp this is a compiler fix it found that um peer info dot lmk was never null um and so i added this lmk set thing to be able to do these checks so a lot of these board changes are going to be this moving the usb serial j tag from the dot h to the dot mk and that allows the make file to use it which is nice and then also on a lot of the c3 boards like if it's a four megabyte you'll see that ble io is turned off as well um and this is the vast majority of the files um and then there's also these header path changes particularly gpio because boards are allowed to reset gpio to a not default state in case they're attached to something so the ones that do that will include this gpio header so that's why we see it there a lot um so here's a serial j tag thing and ble io this is turning off the console to the ur because i i don't want that on the board the quality is this this board on the overhead here that's talking to the dot clock display i wrote i wrote the c2 support without having a c2 i don't think it's complete um i just like in the cases where there was like a value from a value or something that was related um i would add i would add it in but it's not complete um i have a c2 the c2 is confusing because they also call it the 8684 for some reason um and uh i have a board in my cart at digikey but it's not available yet so i think i don't think c2s are really available yet if you have a c2 let me know and you could do this work but i don't know of anybody that actually has one um it was kind of interesting to see like a lot of these c3 builds to start to see like um like how many different boards use the c3 for example and like i don't know of any boards that use c6s either so it's it's really early for i think the h2 the c6 and the c2 but i'll tell you i'm excited to get a p4 in the hands which is their performance performance chip that has no wi-fi i think that's gonna be cool it's got like dsi displays and stuff so it's gonna it's gonna be in high speed usb i think as well they've started adding it to master so it'll be in like idf five two maybe which they haven't started yet so i'm gonna express it has one yeah they do it's okay we'll add it later that's no big deal uh all right let's keep going through this jtag blee gpio um i deleted so this is arduino nano it got like merged in at a weird time and i redid this debug your art stuff so i just deleted it kind of in the interim again moving it out of mp config board and into into the make file for being able to include files based on it see like this is the vast majority of of it um you know the other thing we could do today and that i was meaning to do is actually testing um flash frequency um because i think a lot of the eight of rewards and non-eight of rewards are not clocked as fast as they could which will actually change the performance of them pretty significantly um so maybe that's a task we should just do after after going through this pr because then we could make another pr that basically speeds everything up um which would be cool and i think we talked about that last week as well but you kind of need to you need to at least yeah you need to test it some to make sure that it works because you're like trying to speed up the speed it up in the board layout and the module layout will will dictate whether you're actually able to do that or not um here's a new board this is the expressive c6 dev kit c which is the one that is labeled sample here so that's been added i really like these dev boards like the s2's came in these salads with a single usb thing but these new dev kit the m's and the in the c's with the dual usb are really nice um and this dual usb is even like only to the native usb serial converter it's not even too like that the full peripheral but i really like the dual usb on the on these boards um no usb vid pid because it's it's not a full peripheral um yeah that's the c6 and there's also so that's that's an eight meg flash and then there's also the dev kit m the smaller one and it has four megs flash in it and it has a neopixel and i'm running him at 80 you'll see that billy is off here too so the c6 four megs are also not going to do billy i don't think so here's the the h2 and the h2 only goes up to uh 48 megahertz at at the high end so um yeah this is the top oh this is billy i o off i didn't mean to do that because it doesn't have wi-fi so i thought i'd fit um let's just make it and see let's just see if we we can undo that i didn't mean to do that um but maybe i did it without thinking yeah if you haven't seen to let me know or you can follow up but i don't currently have one there's c2 support in the idea if i just i don't have a board to test with they're not like that appealing for circuit python um because they don't have that much ram but they are wi-fi you look at hardware and then see it says small cost effective wi-fi four and and billy but it's only 272 k of s ram um so like it's not that much compared to even the c3 is 384 i think oh it's like yeah 400 total but 384 probably that we can use so it'd be real tight it'd be it'd feel like you're sandy 21 maybe or maybe even less and they don't even have the p4 up here yeah either it can be funny if someone built the c3po with a esp 32 c3 they could for sure tcd says i remember when 32k was a lot it was never like spacious for circuit python but yeah if you're not doing circuit python then that's a lot circuit pythons much more memory efficient than c python but it's still not still not it's not anything that was like compiled by an industrial or like a full desktop compiler all right and i'm gonna have to turn the ac on there's no way i'm gonna go two hours if i don't turn the ac on so sorry i did run it before but and if like the weather let me show you though and weather updater you can see here that today is sunny and warm but it's all cloudy tomorrow and the rainy all the rest of the day so this might be the last time i need the ac for a while um which i'm kind of like okay actually uh i don't think it's too bad i'd rather be i'd rather have there be a little bit of background noise than me being like melting hi unexpected maker just turning my ac on hopefully it's not too too bad um the 5.0 idf is merged into circuit python and five one is out in pr and add support for the c6 and the h2 to it tyus says is it allowed to have a different default frequency for custom board definitions i squared c bus um i think that would be fine it's probably maybe not what you want but it's probably fine it's certainly fine if the if the this is something we were just thinking about because like getting the uh getting the displays initialized over ice goods here really helps it's a lot faster if your ice grid c bus is faster i think the challenge is that if your ice grid c bus is exposed on your board to other things then you risk i'm kind of confusing it although when talked talking a little more about it she said that if uh if an ice grid c device can't hear its address when it's too fast it just won't do anything and that'll be okay too so i guess i would say it's probably okay we can see but generally you want um apis to work the same as well and in that case it wouldn't work the same if different different boards had different speeds by default but if if speed actually matters i think you should be explicit about it it has onboard devices it makes sense but it needs to be re-initializable at lower speeds per device of use yeah unexpected maker do you have any h2 or c6 stuff coming i was looking up your tiny s3 stuff a little bit s3 s3 s3 is a good chip i'll tell you that let's go back to the pr what it should be pretty quick here oh we were trying the h2 to see if we could turn b leon yeah see so it has i must have put it wrong it has 806 k free or something i have a tiny c6 but not in production as Arduino microbython and circuit by that haven't dropped yet well you could add it to circuit by bond and once this pr is h2 is not very compelling yeah i i get that i under i understand that but i have it and i thought i'd do it just in case people wanted it it really wasn't too hard to sport but it's very minimal sport um okay so let's fix this i must have like meant to put it on a different board i assume it works maybe not maybe i'll maybe i'll have to fix it i know i'll probably do clean so here's a here's an example of a a cuester error that happens because i changed what was included without cleaning um so these are like all usb it doesn't know the the the b le related um cuesters because like it wasn't smart enough to know to rerun the q string process um so if we clean and make again it should it it might fail but fail in a different way c6 is interesting because it has wi-fi 6 support and it has more ram um i don't actually run like network test uh stuff but um be curious to see if it's like more reliable for folks in terms of like i think wi-fi 6 is supposed to be better about handling congestion so yeah i kind of i think unexpected maker is right like we'll probably see more c6 kind of dev boards and we will see h2 dev boards and one of the things that h2 is is meant for is like matter and thread support which we don't have in circuit python and correct johnny h2 does not have wi-fi it's b le and it's um like thread and matter but it's not wi-fi 6 is loads better is it also the device sleeping that you get like for matter i don't know what you mean by that yeah so we got plenty of space and it compiles just fine with b le i don't know why it was off that's just a mistake and i'll push it to the here because i haven't done the review yet i maybe i saw the four megabyte and and thought i needed it but i don't uh unexpected maker says and wi-fi 6 takes less power apparently so hopefully it's better for connected battery projects yeah i haven't done any power testing whatsoever um one thing that's interesting about h2 is that there's this huge gap between 12 and 22 um and it's uh that's where the q-spy pins are they don't even like tell you anymore kind of but circuit python just like blanket resets pins so circuit python has to have a thing that says like oh yeah and don't touch these pins otherwise it it times out like that bug that we've been seeing like the time the watchdog goes off because you hose your flash what does matter matter is an iot protocol thing it's meant to be it's this thing built with matter it's meant to be the end all be all of iot protocols the promise and reliability and secure connectivity with their stock photos it's meant to be like really good for provisioning but the reality is that i don't know like the hue just updated to it but it's still pretty early in terms of like adoption so i'm not sure what like circuit python supporting matter would actually buy us yeah um eric asks you mentioned something called qster what is that so um i don't know what it stands for i think there's a link this is something that we inherit from micro python and what it is is it string interning um so it's kind of like the the regular c compiler where if you have multiple copies of the same string um it gets deduplicated and then it gets assigned an id so in the source you'll see this like mp for micro python q string um and then after it is is the name is the string itself and there is some like post processing that happens about like periods and things like that there's a file you can find about it um but there's basically in the build process and this is true for micro python and circuit python there's a first pre-pass to figure all the all of the q strings that occur in the in the all of the source files so it does pre-processing and then it greps basically all of the pre-processed source files for the mp qster and then it assigns numbers to them it creates macros that replace this with a number so the storage here is is 16 bits so it's two bytes um and then uh and then there's a separate tree lookup um i i i found this too so it's weird it's here i was looking here and here and here but it's actually this big thing here is to their technical documents um it took me way too long to figure that out as well which is yeah like i said like i don't yeah it makes it kind of hard but it's actually yeah it's on the left here it is there it's just like not in the regular pattern of all the other stuff so key strings are deduplicated strings um so they the the identifiers in the source code get replaced with a number via a pre-processor macro for the second stage of pre-processing and then um and then it builds a separate uh lookup table that maps those numbers to the actual strings and caching um in not caching and hash hashes for them as well so when strings come in in python code they do get looked up against the existing number of key strings and if they if they're found then they'll just use that number instead of storing the string itself um so it's kind of like a souped up version of of string interning that the compiler does um hi fed a two david asks what kind of wi-fi do you have at your new place do you use the provided router or you have your own wi-fi for better control so i uh have separate internet from the other folks in the building it is fiber it's very similar it's basically the same fiber that i have at home um but i am currently using the like isp provided router that has wi-fi on it um i was thinking about switching to the the ubiquity um not the dream machine but their newer one dream router i think um which i think does have wi-fi six but the problem is that even on the website they say that the upload the wan speed is only 700 megabytes megabits per second um whereas my internet connection should also be able to do um it should be do be able to do like up to 940 um and if i do a speed test i don't know what it will do with a stream but um i can get over 700 on the speed test i don't think it matters yeah so that's the thing is like this provided router it doesn't have as good a wi-fi like it's wi-fi four or five it's not wi-fi six but the the wan access speed is really good so this computer is like plugged into it and so i'm getting like 900 up and down which is kind of as good as it's as good as it's gonna get so i'm really happy about that it's great for like uploading youtube videos later um oh and you know this this shouldn't be there as well this should be a global setting i messed this up secondary usb serial j tag that should really be in um target settings so there's this new target that i added update i see your question unexpected maker i'll get it to in just a second update all sdk configs so this will take it and split it across all of the files um and what i wanted and it didn't do it is i wanted it to so this change we did and we want that oh see now it deleted it okay so that's that's what we want as well um it must be in there it's just this is the 48 oh it switched it to 64 i wonder what that is oh okay so put it in ops that's a fine place to put it yeah lobbying for fiber was my thing i mean it yeah there's lots places that don't have fiber still um okay so unexpected maker says oh also the c6 has ble 5.3 support oh and it's the first esp with ble 5 audio streaming ability so uh how's ble support and circumfire them going um we haven't um i haven't worked on it at all so it's still like in this like partial state of um the problem is still that we don't have uh the dynamic service service creation after a connection is made um nimble's probably changed a lot with the id of five update because Espresso does keep their own version in nimble but uh but yeah i'm not sure um i'm not sure where we're at we haven't looked at it i've been really pushing people to just be like like nrfs are great nrfs are great for ble um especially the pico people the pico the people that want the pico w to do everything it's complex there are simpler options that already work for the same price or similar price uh and i expect the maker says i have a dream router at home and a dream machine se at work dream router has issues when updating firmware but otherwise working great um can you idea are you hitting the cap of the wan upload speed because that was the one reason i was like but i do have like i have ubiquity at home and i really do like like the administration from a central place but i'm not about to pay them not about to pay them a subscription thing um okay so we found some changes that we want to make and that's fine so let's keep going and we'll we'll push something else it hasn't been reviewed yet um this is a board that just came in and we end to update it i wasn't sure about the console your stuff so i left it and our boards don't have wi-fi you're right they don't what what is the what uses do you see of having bilie and wi-fi at the same time oh no cutie nrf project on the whole glating for esp bluetooth well if anybody wants to give it a shot i'm happy to brain dump i almost did pick it up again because i think i know how to do it we have slow internet and backward australia dumb dumb politicians selling us we don't need fast internet i hate that drives me up the wall like i really think i was i spent a lot of time thinking about this and i really do think that like this speed this gigabit symmetric is really the sweet spot um and the reason is that like a giga gigabit ethernet is so universal um anything above gigabit ethernet and then you get into like higher tech ethernet gear like maybe two and a half gigs because i'm seeing that on more like desktop mother boards but really like at the moment like gigabit ethernet and that's what your internet should match like it's a it's a huge mind shift when your connection to the internet is the same as your computers at your home um so yeah i i'm sorry fast internet's awesome and everybody should have it and all of these companies that want to like piecemeal you every five years to get higher speeds just need to give it up and and realize that that's not the world fiber is a much better investment all right we're going through files this is good i don't always review my own pull requests but currently when i do i find changes to make billy based device detection to auto connect wi-fi type stuff is very handy but yes 99% of the time you don't need wi-fi and billy together yeah and our assumption is like you got to get circuit by phone on the device and so we might as well get wi-fi credentials then too um esp32 like there was more stuff in fast rtc memory or something so i did have to reduce the amount of sleep memory we give to the user uh i just didn't want to have to bother with it um this is a oh if esp deep sleep start can actually return now and what do we do when it returns i'm just hard for i'm doing a safe mode when it fails i only have 100 slash 50 here and pay through the nose for it so no no 700 cap issues yeah i'm paying 65 us dollars a month for gigabit symmetric it's awesome i pay 85 at home because i bought it ages ago and i'm on the like a we'll never change your price plan they reduced it but we'll see i don't know if i've gotten billed yet for it but i think like taxes might make it higher than the 65 mark says i always love when i find out my home connection is faster than the server connection i'm connected to yeah that is an issue right i mean i'm in like i'm in urban seattle basically it makes sense for them to have pretty good internet service here um okay so this is more target specific stuff um there's only 180c peripheral so i had to like change this code on the c6 there's only 180c unit not two so this code that's designed for two units i had to change a little bit and i'm really biasing myself towards these sock underscore um macros because they're kind of what um the whole idf uses to know kind of the settings for a particular sock like system on chip so they're really like they're much preferable to these like per target things um because there's like things of there's files for each of the targets that has all these sock definitions which is really nice so like that'll hopefully make it easier when we add p4 support um if we're using sock definitions we it should just work ideally um analog in i changed because the c6 adc is not supported by the legacy driver so i just updated it and as i admitted earlier i didn't actually test it um so that's one thing folks can do if they want to help ooh hundred symmetric for 45 a month is good i think that is like yeah the thing here is like most of the alternatives people have is it's going to be like like comcast the cable provider has gigabit internet which is actually 35 up it's like a gig down but 35 up um which you know when i need to upload a big file i really appreciate being able to upload it quickly um analog out i updated it as well i don't remember exactly why i did but i did it so i i really should test that i'm i'm not a great tester it's one of those things i should be better about and talking about people that like really shaped circuit by bond like jerry jerry n who you know on discord he's a really good tester and i i remember telling him one time i was like if you ever find an issue let me know because i'm not a great tester i'm happy to fix it happy to fix it but i'm not super thorough lamora is also really thorough i'm not this is unfortunate so there are some if they have one can peripheral which is what this is they'll either call it tw ai zero or they'll call it regular or no zero hi mire makes mayor makes um and unfortunately these two symbols the tw ai and the tw ai zero they're provided in by the linker script which means i can't say if it's defined then do this other thing i tried that and it didn't work which is why i'm telling you like we just got to do it based on target and it kind of sucks um this is a fix um and it has this like idf issue link and it's just incorporated because we updated so we no longer need to to carry our own version that's fixed uh more header stuff uh different numbers of timer groups um i'm a 10 000 not a good tester of my own stuff kicks my butt so often yeah mire okay hey clen mark says i'm with you there thorough testing is hard to do it gets worse the more i have been working on something too yeah yeah that's why i like strict compile flags because it forces me to fix them uh gpi o24 just wasn't listed but we actually need it now i switched it to using the sock pin account instead of weird target base rules um and then these are the never reset so these are the spy pins for the c6 the serial j tag pins of the you are default ur and then for the h2 flash pins some pins that they don't make available but i'm not sure what they're used for serial j tag and ur the c6 i think has the ability to actually hold a single i o without having to turn it on which should be better for power um so i'll be curious about that and this this deeply pulled enable and disable that that those functions disappear if they're not supported just kind of unfortunate so that's why we have to protect them if this was circuit by the online we'd still have the functions they just wouldn't do anything so that you could call them um yanni says fed a to any cool new risk five boards so the h2 and the c6 are both risk five boards just saying you want risk five boards those two are both risk five boards i think like we were talking about last week uh cpu frequency they they switched it to a single setting instead of per target um this is the unique id from the mac address register and only the h2 has a different um this is the rtc lpa on and i could probably redo this but because the like target is in the path i i chose not to so this is where we store our like safe mode register and how we set it to go into the boot loader it's there esp camera i updated so that it builds correctly on c6's basically it doesn't build but it doesn't crash because it knows it knows it shouldn't um here's the idf update um to the five one branch for us uh with five oh i removed all the default settings um that were set to defaults and that's why debug is is a lot thinner is because the default settings are now not included i meant to do it in five oh but stuff i meant to do in five oh i just did here um this wi-fi settings have moved around a little bit they renamed a couple settings and five one here's the new defaults for the c6 so these are target specific defaults um you can see extended advertising's enabled and bili is here i have i had split bili off before but um i i'm kind of moving away from that because some of the bili settings are target dependent anyway so here's h2 s2 s3 um more oh there is a 64 more flash frequency tiers the error message told me i could only do 48 on the h1 but i bet it's actually um 64 um added a new 48 target which seems it's not actually using added so these these flash files do include non defaults so that they're uniform i could change that uh turning on experimental features that'll allow us to do 120 um which i think it is worth doing on the stream because it's something that we're going to need folks to do on other boards um like i don't it's a hundred we have 130 or so boards um esp boards and so uh i don't own them all and so we'll we'll want to test them here's the live em switch uh here's some default settings for c6 and like i said um oh rgb matrix is off for h2 but it is on for c6 maybe um we'll have to look at that and serial j tag is off by default on the s2 and 3 getting there mp help port this is um when we do uh when we do the garbage collection we have to know where to look for root pointers and on extensa and which actually we should probably say explicitly extensa here instead of not arch um but you have to get them out of like this register thing you actually get them gotta get them written in memory um here's the c6 pins it's got up to it's got 31 so 0 through 30 indices it's got one adc unit blah blah blah um and here's just the the declarations for it h2 pins it has even fewer pins it's just got through 27 there's a huge gap uh where the pins are for uh the spy flash the only the only tips that they sell right now for h2 include uh in package flash either two or four motorbike uh in package flash here's the pin header um adding just this redirect there here's the low power rtc add-on stuff again so this is this i was gonna say saved word but it looks like it might be um yeah it is the saved word stuff previous one was resetting in the bootloader build memory info this is what checks to make sure that we're not running out of space so you put like the different memory maps in there and that's what produces the uh kind of report at the end of the build although it didn't do it there because it was the same milk five stuff this week but haven't played with it yet the duo which is dual core one gig and 700 mega microcontroller that runs Linux with 64 megs of ram mars which is kind of like a slower board dual pie for got a donation of a pine 64 tablet and the software is getting better by the week this drive is certainly the future i'll give you that and then i made a few changes to this update stk config script to actually detect whether billy is used in the target and this makes it easy just easier to fix it up oh let me tell you i don't like kconfig i had previously had this like item dot reference so this is like the if you have an item in kconfig uh what does the what does the default value depend on um and all of the menus and stuff and that was really great because i could say like does it depend on billy does it depend on spy ram and like filter send it different ways like different files to have it but i found a case where the settings in kconfig can can set other values kind of it's it's like configuration languages should be simple this is not simple um but basically like setting a value and one can override the value of another and the the other one doesn't know that the first one can do that through this reference property so i added this ability that it does have reverse dependency so it knows the things that could set it and so it takes all of the things that that thing references and maybe it should do it recursively it's it's stupid um it is a complicated configuration system but yeah so there was like some spy ram dependent thing that didn't know it was spy ram dependent or wi-fi dependent something like that here's the new esp serial stuff here's uh i was complaining about this i think the queue string process if it if the header pre-processing fails it fails with like the big long output of the command it ran and so i i catch i i stopped having it do check and instead i checked it myself and then i raised it like smaller error message then lastly here we have this ci check that makes sure that we don't uh reuse usb pids it also works for um creator ids which are my creation to have some like names number numeric space for identifying um boards or whatever it i was also thinking i had to like fpga land where you needed to know what a peripheral was um but it has this reg x to detect whether it it should be usb or not and so i added c6 and h2 there as well so c2 won't work uh there's some work more there but if i happen to have some stuff uh when i would do that so yeah that's that's that let's um commit and push yeah so this this report here is what is generated by that that uh ram layout so this lps ram and hps ram numbers well all three of these lines come from that script and then these are the target specific things um so let me finish this so these are already added which is great so let's just um say enable deli it's the only dev kit that has it so it's basically all of them and we'll push that to our branch and it'll show up on the pull requests um love the factory asks which one is best for internet with on chip ethernet mac instead of slow spy alternatives are you talking you're probably not asking me you're asking fed a 2 about the note 5 i don't know a lot about ethernet so i can't i'm not i've not actually done ethernet myself okay you know what um i got more boxes you probably can't see um but the uh i have these like higher i'm just trying to loosen my camera without like completely jarring yeah so i have these two more ikea bookshelves these are like new calyxes and you can see i got boxes there and some blank boxes there so i've been as i try to find things i've been like okay i'm gonna spend some time um separating stuff out so i think what i'm gonna do is i'm actually gonna i think i have my s3 box here and i think i added some of the eta fruit boards to it nope i didn't where did i put those i thought i found s3 feathers this is the problem uh maybe we'll just do a cutie pie first because that's what i have oh you know what here's a here's a feather tft esp 32 s3 and it's a n4 r2 s3 mini so if we uh if we pull up the board settings here this is the s3 eta fruit feather s3 not the reverse but the regular tft we'll see here it's set at 80 which is probably actually good these are set at 80 well i'm looking at this number here 80 80 40 and 80 for this s3 4 2 which actually is this one's 4 2 as well do we have two versions of it we might s3 4 2 this one is also 4 2 so i'm just gonna change this like it's probably the same module and the module is really the thing that's going to dictate how fast it runs let's just take a look because there is this um yeah so it prompted me to refresh because it had the changed files let's just find this 120 megahertz flash setting and see what it says about it esp ps ram it's only the s3 that can do it see there's p4 in here because i'm looking at master spiron mode type speed quad ps ram and 120 is stable octal ps ram 120 is experimental it works when the temperature is stable which is probably fine for us psp ps ram where's the flash settings yes flash spy flash so s3 so this sock caps in is like okay good big dangerous right where's flash speed so this gets interpreted via esp idf config speeds oh yeah esp tool flash frequency that makes so much sense it's a great name i think it does apply to the actual startup speed though so yeah so see here we have um there's this component spy flash esp flash spy init and it just maps from esp tool flash frequency into this default flash speed which is just like head desk clipper the make clean of calibration c2 is default 60 hpm is high performance yeah see like 80 is usually what i see here like here's a s2 default at 80 these are like the settings they did for like the performance test so i think 80 is like pretty safe actually like the chips themselves are the the die should be able to do up to 120 anyway let me just take a quick peek at all of the board configs for eight different boards boards yeah so this is di o this is a feather esp 32 v2 which i know i have have it on my desk i do not but like this sort of thing should be able to do qio at 80 here's another di o at 40 that's the feather s2 s2 di o just bump that one up s3 reverse t of t is at di o but 80 so yeah i think a lot of these are clock too low well they work just fine they just don't work as fast as they could if they were clock faster they'd run faster um that's not entirely true but i think it's pretty true because um this is a matter of like there's a cache in front of the flash so if you hit the cache you're fine and it's fast but anytime you miss the cache like you're going to be twice as slow as you need to be or more um so that's kind of what you're speeding up is the the times that you miss the cache is when you're speeding up and like circuit python because the vm's like not small my guess is that you go through that ram pretty or you go through that cache pretty pretty often i did some optimization work on the imx uh to make sure that the vm could run all on its own without the cache or like using the tightly coupled memory instead um okay i don't i know i said i was going to do that but i don't really want to take my mic off and have to get stuff out let me just look at the cutie pies because it looks like i have some cutie pies this is a cutie pie esp 32 this is a cutie pie 20 40 this is a cutie pie 30 esp 32 again it's not really the one i want to optimize but because like they can i don't think they can do the they can't do the 120 which is the more interesting piece so i don't know i kind of want to do this matrix portal stuff any objections to doing matrix portal matrix portal work i doubt it doubt it shift this so actually let me show you what i'm doing here's the overhead and it's not in focus that's better um it's upside down so this is the new this is a rev b but rev c will be i know more did a rev c so this is a um qualia board is that the like trademark name that i think they're going to use for it it's like a tft testbed sort of thing it's kind of like a matrix portal but for these like fancier tft parallel displays i showed this one this one earlier as well but this is the one that takes the initialization that i don't really want to work on right now um i kind of want to do this matrix portal stuff because i think it might be easy to to fix um and that's it's friday afternoon that's what i'm looking for so um i'll just you know i'll just take this off so these are this is the like um pc byte probe system where they have these like these uh are like spring loaded a little bit so that they they set really well um and i did get one as well that is uh so i was using that to read the u-art because i'm lazy uh i was just like had it on the u-art pins here but you could use it for other signals that aren't just pin headers and then these are the holders these are the holders and this is spring loaded so the yellow the yellow bit is to isolate from the metal and then you can put the board between that that moon calendar was just stunning was that a matrix portal thing moon calendar i missed it okay so got here is so this is a matrix portal s3 and you can see i've gone a little crazy with my label maker especially for all of these modules um i i i've labeled the module so it's easier to read instead of squinting on these like things because i've been doing so much esp work i did that um and then i'll only show half this matrix because i think the matrix portal itself is probably the more interesting piece at least that's what i'm going to be be loading at so um let's see if we can get rgb matrix working in in the next half hour um on this i don't know the current state or anything but the first thing i'm going to do is i'm going to build i'm just going to work off that five one branch because if like i don't get review feedback from dan you know over the weekend or or before i fix this like i'll just push there um because it's all five oh related even though there's an issue for it a separate issue for it but once the review starts i'll i'll not do it but before that i feel free to do it okay so this is just the this is like fresh out of the box fresh from ater fruit demo so it's really nice because i know that like the display works and my setup works for it um which is great um so i'm just going to reset into the bootloader i'm not even going to like they warn that u of two is not it i'm not even going to use the u of two bootloader because my kind of like my dev workflow just doesn't doesn't include it so let's do this and sorry you can't see me but that's that's the nature of it so we're going to make board equals ater fruit matrix portal s3 and we might as well put the port because it should be active dev serial by id usb and we want these serial legit tag thing that the bootloader uses um i'm going to clean and then i'm going to build let's do a quick take a look at our defines though because we ideally it it should be enabled but like there's no reason for us to start working on this if it's not turned on so there's nothing here that's disabling it matrix portal s3 so let's take a look at the top level so right now i'm just making sure that the rgb matrix has been stuff is being compiled in which in theory it's not although it kind of looks like it is rgb matrix uh see there's this disabled temporarily so let's set that the one and we'll delete that and let's see where we're at uh we did the clean already i need a moon calendar ari my kiddo loves to look at the moon i made the mistake of asking him if you wanted to go see the moon on the day where it's cloudy he's like oops can't see the moon when it's cloudy or when it's like a new moon i've come to appreciate that more than i have in a long time right so we're starting to build and see how far we got i guess while i'm doing this and i'm not loading it on the device i can show me anybody have weekend plans i don't think we have much i'll probably go home and play a little video games though so i think the kiddo will be home a little late so i'll have a little bit of time i think should i find the moon calendar they even filled the project oh phases the moon from an api and shows them on the round screen nice yeah these displays are nice i like am interested in doing it and i made this like test bitmap and i kind of want to have a test bitmap for for round displays that will like has like construct concentric rings for like how big it is phases the moon that's what i need i also want like moon rise and then set times because he goes to bed at like 730 it's got to know okay so static declaration of pm start timer start follows non-static declaration that seems weird so we are in so i wouldn't be surprised that we had so rgb matrix support uses um the protomatter library under the hood which is uh a library that we share with our do we know actually that phil b is the the main person who does it so i wonder if the simplest thing is pan was it timer start arch 32 common 130 it could be uh ah if we're compiling for circuit python ah and and we're idf major version five that would explain it so i i saw this and was like that seems familiar and i looked do i have this open still uh basically yeah this is the thing i found earlier like microdev already did work to support esp5 in protomatter like he's the one that told me disabled it so maybe it doesn't work but like just like the 5.0 update like microdev got it 90 percent of the way there and i just had to do the last 10 percent which is non-trivial but like it's a huge it's still hugely helpful hey compiled doesn't work so we're gonna we're gonna need some test code and have i done rgb matrix stuff before it's been a minute so here's the protomatter guide oh look at that 105 here's the basics does the basics no the basics does not have circuit python that's like jeff's guide is the place to go oh why did my tab crash test example code that's what i want the library works with a limited number of boards so this is not test circuit this must be near this is probably like to make sure that what did i click the wrong thing i'm in the basics guide i want the circuit python guide it crashes my browser oh it's back connecting connecting using a makers portal let's do game of life hopefully it's not too complicated i mean it's a little complicated but hey look download project bundle open it up nice you're gonna go see folks play hi electro fix labs percussion festival that sounds cool oh wait it's just a code.py let me hit reset should pop up got hello world on it so since it's just a code.py we can just copy it here hit copy code and save it and we got an exception portal module object has no attribute d6 so it must be our gbpins do we have names for these i bet we do i could look at board maybe i should just look at board i don't use the rebel for that many things okay so that there is uh so there's matrix adder a b c and d e matrix address what is matrix at this matrix common that looks familiar so rgb rgb clock latch okay so we can do address pins board dot mtx adder and then we can do four dot matrix common and the two stars unpack it so it's like each keyword is in uh oh and it's address uh oh we crashed we crashed hard this is great actually this is something people ask about okay so i have an esp 32 s3 and i crashed it's telling me hard fault memory access or instruction error that's no good um how do i figure out what's happened so let me go to the overhead i saw that z k m like k k but with zephyr uses something like a on on the next boot go to u of two for updates you reset the board by using a keyboard button instead of pc go to that and that was pretty cool z mk okay so it's like c code that uses zephyr rather than whatever q mk uses i have my own bespoke keyboard stuff that works just fine in circuit python okay so what i'm gonna do is i'm gonna do a debug build so i'm gonna clean and then i'm gonna do a debug equals one flash and i'm gonna go over here and reset and let's go to overhead so it's sorry it's a little washed out um so now what i'm gonna do is i'm gonna take my things here i have um them connected into this green one is connected into the rx of a serial converter so i think i'm gonna put it i think that's what debug is here is the tx debug so i'm just gonna you know what i should use a holder and raise it up i don't think these holders can actually completely hold the matrix but and then the green one will go on debug i think is the debug output and this black one is ground and they say 45 degrees i just reach around and do the boot again hopefully we'll yeah so we get the boot output yeah so here this this last bit tells us that we're our debug output is not working and it's waiting for the flash to happen and there goes the flash we'll have to hit reset i needed unit code so i went with dmk i'm planning to go into circuit python as soon as possible i should say that my keyboard library i'm using it parses the qmk layout files like the json files to know what buttons are what which is kind of neat but i didn't want something super heavyweight like the mk things are okay so let's hit reset and we'll see where this crash happens okay so when it's in debug mode it has this um it instead of resetting into safe mode it will if it's working right it will go into the panic handler and then stop so this is the thing the idf gives us um for uh when when bad things happen um and it gives us this back trace so what we can do is we could copy the back trace and there's a python tools so this is in the expressive port decode back trace and then you give it the word so it's ate a fruit matrix portal because it loads they uses the board to load the s3 or s3 file um okay so we're in run code dot pi cleanup after vm reset displays dnit dnit one timer disabled so we're in rgb matrix 63 and what's probably happening is we're trying to we never initialized correctly but we think we did maybe um so let's do ports common how actually no this is not common how it oh no it is common how rgb matrix rgb matrix common how rgb matrix rgb matrix and enable disable three we're in disable line 63 okay so we're right here so the only dear reference we're doing here is this so i wonder if this is what we need to check so it's trying to check the timer index and then shut it down at maybe but maybe there's a world where we never allocated the timer or it didn't work um and so we freed it but it didn't check so the other thing i want to i like to do is i i'm i'm a printf debugger mostly um so let's start adding some printfs as well let's not care this is a standard thing the tag for cp or gv matrix for logging so i'm just gonna say um so here's a mallet call but i wonder if this mallet call is failing esp log info tag timer allocate and we'll do the pointer that we get and let's do similar this will just give us a better idea what has happened before we get to this point where we're where it's um not working so we don't need the factories thing and we only changed circuit by the code so we don't need to clean and let's put it back in the boot so we're flashing again folks have any other questions now's a great time because we've got about 15 minutes left before i stop stop the screen my my camera is a little high i think what do folks think in terms of angle of this camera i kind of like that you can see the some of the boxes but maybe not and i guess this is zoomed in mode too that should be better for focus all right let's reset and go again it's all about the boxes i can't tell you it's it's pretty unreasonable how i'm excited how excited i am about these boxes i've made two orders and i got a second order and i've got you know like just under 10 blank boxes and i'm like already thinking i should just do another order it's like 60 bucks in order i got 28 boxes last time and i was like how many more squares do i have like i've got four cubes of the i've got four cubes of the things that are empty and i haven't gone through my fpga boards or my other microcontroller boards yet and it takes like a week week and a half for the boxes to get here so i think i'll probably just order more they're not too bad oh sweet so it didn't crash or at least it didn't hard crash i'm looking for the blink it's still it's still um blinking like an exception happened redoing my workshop these weeks and it's such a great idea yeah i don't know why i'm i'm i'm i'm excited about it okay so reserve zero bytes i wonder did we even run i don't see any of those logs that we just added so i wonder let's see what it's in use ntx r1 is in use oh you know what i bet it's a j tag did the logs go through the other you are uh no they didn't i don't think we got there when you do a debug build i mean it seems like we're you know what i did fix the issue right i added that null check and i put the log after the null check so let's actually move that up there and then the other thing that's been hampering me is that's there's this code in port where if you do a debug build it doesn't touch the j tag pins but the j tag peg pins are on by default and i was meaning to add a check to say like is it actually possible that these pins are used but in the meantime i'm just adding an in false here so it just doesn't do that and we don't have the file system mounted so let's let's do a new build maybe there's some places just calling that with null and not being smart about it yeah yeah timers undeclared i know i moved it and i didn't change it so now we'll know if something's calling it with null it's possible seems like it's not getting null from the allocate though it's not getting seems like we fixed that crash this will tell us for sure reset to get out of the bootloader back to tio five address pins six rgb pins and one tiles indicate a height of 64 not 32 um i don't even know what this panel is but it's see i feel like it should it should allow me it should be okay if i gave it too many pins maybe it should only error if it gave me not enough but we could also just change it and see uh here's the here's our timer disable fall and in fact we had a factory support didn't we should it really be calling at main clean up after vm reset displays maybe that's what should be guarding the dn it shared mental display i own it like i really shouldn't try to dn in it if it's null it should be smarter than that 227 i'm surprised that address of pn base so it did get the type set but the object itself isn't null any display uses this frame buffer it's the address of the base of the object this really shouldn't be null so i don't if timer free this could be a problem with rgb matrix like the the object got allocated somewhat it's partially allocated d in it one so this this self timer is the problem so we should say if self timer is not null so well i'll leave you check it the guard in the other place as well it's fine comparing your mind zero is pretty easy but i'll do that as well so we stopped doing that the other week we talked about manual backtraces but there were other issues would help here um i don't think i need to know because i i i feel like i don't need another backtraces i because it works i kind of know where i am right now vete too says how's the sony camera working out i'm thinking of buying an a6100 for use with my venus macro lens i've been a nike on most of my life so i'm a bit hesitant to do this um this sony video blogging one has been great but i've also only used it in this context it's it's not been used for anything else so it's fine but i i haven't used any other any of the other sony stuff i just was looking at an article they like released a new version of this that's like 2200 i was like it's for like video blogging where you're like out and about as well not just as this like webcam setup i'm pretty happy with this just like i was thinking about this just like my like gigabit internet idea is the sweet spot i think that 1080p is the streaming sweet spot for me as well like you're getting one to one one to one of the pixels on my screen already um so if i wanted to do 4k like my screen would need to be 4k as well and i really like ultra-wides and they don't as far as i know they don't have like 4k tall ultra-wides or whatever they are like they don't have those yet so yeah it's been working out fine okay so this let's just try to figure out what panel i have i'm in the middle of something so i'm gonna keep going um i have this panel is pretty small and my guess is this 32 by 64 i think it's this one 64 by 32 let me use my hands for size you can't see but i think my hands that's pretty similar it's yeah and you can see that i purchased it October 23rd 2020 so it's 32 by 64 so let's open up our code and do 32 by 64 and it's still complaining that five address pins six rgb pins and one tile indicate a high to 64 not 32 so do i just strip an address pin so i do a slice maybe hey oh my goodness it works um i'm not sure if the orientation is correct um but this looks like what i would expect for oh and we saw the the REPL here oh it doesn't look right REPL-wise that's not readable so if we're looking at um Blinka here like this should be Blinka in the corner and then we should start to see the start of the tile title bar so like wi-fi so our um pin names are our address lines are wrong so i wonder if we just do that so that i don't know what they're supposed to look like for two generations and then after two into the end generations fill the board with random values so here it looks like we're just not addressing some of the panel at all so to me it looks like it's working it's just not working correctly um and i don't know enough about i don't know enough about these see it says it requires six bits of data seven bits of control and a good five volt supply so we have the six bits of data but i don't know i wonder where we could find like the right settings i just don't have like the right pin settings for rgb data it's over to the bottom half of this display the other place we can look is like there's the matrix portal library sorry we'll wrap up here in just a sec but this is like i'm so close so close oh and you can't see my yeah sorry i'm i'm i'm looking online let me go desktop and overhead so i was looking at the basics led matrix guide and now i'm looking for the matrix portal code um which hopefully has like it has the simple test it's 64 by 32 matrix portal board is abc if height is greater than 16 then add d okay so that's what we did and then the rgb pins are r1 g1 b1 r2 g2 b2 is that what we have maybe these are wrong r1 g1 b1 r2 g2 b2 clock latch output enabled so those are right but this is not what's the magic permutation so i did this right where i wanted a a b and c r2 d2 beep boop boop boop boop boop boop this could be um this could be a problem with the code itself i doubt it you know what i could do final thing oh it's so annoying though oh you know what i have a branch i have circuit by the eight branch where i can make board a to fruit matrix portal s3 clean let's just see if it works here then i know my code's right and though like the behavior is wrong all right last thing we're gonna do we'll roll load at one and then be done ask chat gpt could it be the unpacking i don't think so i don't think so the the star star unpacking should just um take every key in the dictionary and make it like a keyword art but it shouldn't change like the order or anything it seems right it's close oh and you know the the test demo work too so it could be just a protomatter bug because there's we were looking in protomatter and there's this like it's updating this idf5 thing hold on had disney's so here's idf timer starts uh this all this stuff is all pretty straightforward like the pin number is going to be the same that won't have changed so flashing i'll just take the weekend and let my mind think about it all weekend and then i'll be like oh that's probably what it is i did that twice so like the c6 was crashing and then i realized i had to do the like architecture flag and that worked and it fixed it and then with h2 it wasn't working it was crashing and then i was like oh i had it's the like i bet it's the um flash pin protection thing that's what it was so taking a break is very valuable so let's just see if it works with a2x ish it's a2x ish it's my own bridge but see that doesn't look right either well this time it's blue doesn't pick a random color yes okay it picks a random color it isn't oh you know what this this address thing is not right oh i crashed it i wonder if this is the same bug anyway we're over time uh obviously is blink of blue now i bet it's i bet the crash that just happened is the same crash we already fixed which is the maybe it could be a different one anyway we'll find out um all right so this has been deep dive with scott thank you for hanging out with me for these two hours uh sorry i didn't get the rgb matrix quite working but we'll pick that up on monday um or maybe i'll do a little bit later after the stream we'll see deep dives happen mostly most fridays if i know if i'm unable to do it then i ask tim foamy guy to do it and he does a great job as well if you want to hang out with me and a bunch of other cool people throughout the week i encourage you to join the discord uh adafru.it slash discord is the url um preemptive thanks to dcd for taking time codes if you look at past episodes you'll see time codes that's all thanks to dcd who's in the discord chat as well thank you all for hanging out uh please please please uh 5.0 is merged in uh if you have some boards that's not critical you want to test it out we'd love love to have you start testing it um you can go to circuit python.org slash downloads and get uh absolute latest should include 5.0 right now and 5.1 hopefully early next week um and then once micro python 120 is merged in then we'll be able to do 9.0 alpha releases as well um if you want to support me adafruit supports me really well so support them um by going to adafruit.com and purchasing uh much of the hardware you saw today is is developed by them and sold by them um so check that out and uh support us please uh with that uh no cats uh no cats to pet um just lots of exciting custom sized boxes uh if these are interesting to you and you don't know you can go to adafruitplayground.com and uh somewhere there there's a a post on how to order custom custom cardboard boxes for your storing your dev boards in ikea bookshelves um yeah so that's it uh have a great weekend and i'll see you all next week thanks again to catney for all