[00:01.590 --> 00:06.290] Okay, yeah, so welcome to this HOPE Badge talk, No Badge, No Problem. [00:06.470 --> 00:13.270] I'm Victoria, this is Vinicius, also known as Jellyfish around Discord socials, the Signal Badge chat. [00:14.030 --> 00:21.730] And we're here to share a little bit more about the HOPE Badge project, some of our challenges, and then also do some demo as well of its capabilities. [00:22.250 --> 00:37.910] So, me personally, this year, my role with the HOPE Badge project really started out more as an observational role, and then kind of grew into contributing for some of the admin stuff, what with sponsor follow-ups, and then, well, this talk here. [00:38.310 --> 00:46.750] So, my day job, a little bit about me, cyber security engineer working in the OT space, which is why I love, you know, devices so much, because of the physical form factor. [00:47.390 --> 00:52.370] You know, they help you see what's happening in software and the firmware, and connecting those dots is just really fun. [00:53.130 --> 00:54.890] And thank you for being here today. [00:54.890 --> 00:58.130] I know there's so many great talks you could also be at. [00:58.670 --> 01:00.330] HOPE has got some great content this year. [01:00.450 --> 01:02.110] So, we really appreciate you showing up. [01:02.850 --> 01:04.390] We're going to do this in two parts. [01:04.570 --> 01:12.750] So, first, I'll be starting with some general info about the electronic badges, recent work for the HOPE Badge volunteer team, and then the struggles we had with production. [01:13.410 --> 01:21.990] And Vinicius is going to pick up with part two, demonstrating his work this year with developing the badge capabilities, such as hosting some Wi-Fi and a web server using ESPHome. [01:23.290 --> 01:27.470] So, and if you find yourself wanting to know more, he has a workshop later. [01:27.630 --> 01:30.190] It's called Getting Started with ESPHome from Zero to Cool. [01:30.330 --> 01:35.490] And that'll be over in workshop room A, Tobin 219, at 5 o'clock today. [01:36.010 --> 01:37.450] So, yeah, check that out. [01:39.070 --> 01:44.850] Sadly, as you've probably already heard, there is no new badge, new electronic badge for HOPE this year. [01:45.490 --> 01:48.470] And we don't have any boxes stashed away either. [01:48.590 --> 01:49.110] I already checked. [01:49.850 --> 01:53.990] So, we won't be doing...unfortunately, we won't be doing any releases. [01:54.870 --> 01:58.130] That aside, I'm hoping that some of you might have brought last year's badge. [01:58.510 --> 02:00.450] We will be in the badge village if you want to come. [02:00.710 --> 02:04.030] Yeah, we see...yeah, I heard...talked to some of y'all yesterday and you were like, I've got to go home and get it. [02:04.250 --> 02:05.030] I'll bring it back. [02:05.810 --> 02:08.710] So, yeah, we'll be in Marilac Terrace the rest of today, tomorrow. [02:09.370 --> 02:15.330] If you have questions, you want to get involved with the project, and then also, if, you know, you just need some help getting started with badge hacking. [02:15.930 --> 02:24.230] So, before we dive in, I'd also like to recognize our volunteers who really helped contribute developing some new pathways for use of the current badge design. [02:24.450 --> 02:25.450] That is MSVB. [02:25.570 --> 02:28.650] He, unfortunately, couldn't be here with us this weekend in person. [02:28.990 --> 02:30.350] Pedro, as well. [02:30.890 --> 02:32.050] Mitch and Vinicius. [02:32.290 --> 02:33.710] And if I miss anyone, I do apologize. [02:34.070 --> 02:37.090] But I just want you to realize that your contributions are crucial. [02:37.290 --> 02:40.410] And to my knowledge, this is, of course, a fully volunteer-supported effort. [02:40.410 --> 02:42.110] So, we appreciate all the help we can get. [02:42.950 --> 02:47.230] And if you're virtual or you wanted to stay connected, you might be interested in... [02:47.230 --> 02:47.930] Oh, wait. [02:48.010 --> 02:49.010] I think I forgot my slides. [02:51.730 --> 02:52.670] Yeah, just some details. [02:52.790 --> 02:54.790] Marilac Terrace and then the structure of the talk. [02:57.610 --> 02:58.330] Badge workshop. [03:00.730 --> 03:01.890] The signal badge chat. [03:02.010 --> 03:04.210] Please join if you're curious what's going on in there. [03:06.250 --> 03:06.910] Okay, yeah. [03:07.150 --> 03:10.470] So, and I've also got a link tree that has it included. [03:10.710 --> 03:12.210] And that will be at the end of my slides. [03:13.910 --> 03:14.310] Okay. [03:15.890 --> 03:18.770] So, let's talk about electronic badges and some fast facts. [03:19.270 --> 03:20.710] I've got some examples, as well. [03:20.830 --> 03:27.030] So, if you're new to information security or the hacker conferences, then you might not be very familiar with the electronic badges or badge life. [03:27.230 --> 03:29.610] But that's okay, because we are about to get into it. [03:30.030 --> 03:32.750] They're usually made of PCBs or printed circuit boards. [03:32.750 --> 03:35.490] And they may or may not have chips for advanced functionality. [03:35.790 --> 03:39.810] But they do usually have at least a few LEDs and a power source, of course. [03:41.210 --> 03:44.910] A chip or integrated circuit, of course, is a collection of electronic components. [03:45.130 --> 03:50.430] You've got resistors, transistors, some capacitors, and all that's stuffed into a tiny little case to work its magic. [03:50.970 --> 03:54.110] They are the heart and brains of most advanced electronic badges today. [03:54.510 --> 03:58.370] And once you know the chip, you can find documentation to start hacking it. [03:58.450 --> 03:59.550] You can flash new firmware. [03:59.550 --> 04:07.210] So, really, just knowing, like, who was... who produced the chip, you can find the documentation and get started playing around with it. [04:07.950 --> 04:08.370] Okay. [04:08.510 --> 04:13.150] So, for example, the HOPE badge has an ESP32C3, which is highly powered capable. [04:13.710 --> 04:15.830] It's got Wi-Fi and Bluetooth built in. [04:15.930 --> 04:18.090] And then, of course, like, you can use ESP home. [04:18.350 --> 04:21.770] So, it's kind of... it's structured for, like, use with IoT devices. [04:23.070 --> 04:29.770] Overall, depending on the complexity, electronic conference badges, they really serve us by advance... [04:30.570 --> 04:38.130] or, sorry... they deepen the immersive conference experience, and they allow for a greater level of interaction as we try and hack them at the conferences. [04:38.730 --> 04:49.670] So... and they're also one of the original ways to really gamify hacking electronics, outside of projects like Arduino, Raspberry Pi, Adafruit, and then, like, they make electronics sets. [04:50.750 --> 04:59.830] The majority of badges I have seen or received are capable of being held, like, in one hand, and they're usually wearable by way of a lanyard. [05:00.090 --> 05:01.530] And they may or may not be interactive. [05:01.530 --> 05:09.830] The simplest I've seen is just has a graphic like these and then some strategic LED circuits, and they may or may not have, like, an on-off switch. [05:10.170 --> 05:12.090] These are some from the B-Side series. [05:12.090 --> 05:15.510] It's pretty common with just the graphic and then the LEDs on the back. [05:16.090 --> 05:21.270] They, you know, might have some puzzles or some hashes printed on the silk screen to decipher. [05:21.630 --> 05:24.670] Sometimes I've seen them part of a larger conference CTF. [05:25.290 --> 05:29.850] And you might even have to assemble them yourselves when you show up, but that's all part of the fun. [05:29.850 --> 05:31.190] So, if you know, you know. [05:33.090 --> 05:34.050] They increasingly... [05:34.050 --> 05:34.650] Oh, whoops, no. [05:35.270 --> 05:35.870] Oh, yeah. [05:35.990 --> 05:38.310] They increasingly have something called an SAO port. [05:38.470 --> 05:39.290] It's a simple add-on. [05:40.150 --> 05:42.270] Six-pin standard documented by Hackaday. [05:42.430 --> 05:44.830] So, you can basically add a badge on your badge. [05:45.330 --> 05:56.190] And this port on a badge enables you or, like, anyone to make an additional PCB that you can attach to that SAO-capable device because you really want the power, especially if you've got LEDs. [05:57.030 --> 06:02.510] And so, all you have to do is make sure that you have the six-pin mail connector on the back and you're good to go. [06:03.050 --> 06:06.270] So, speaking of SAOs, I made one for myself this year. [06:06.370 --> 06:09.590] It was a little jellyfish just to share with friends or trade around at conferences. [06:10.670 --> 06:17.950] And that, you know, it's just a personal challenge I set for myself to learn more about what it takes to make small electronics last year and to kind of dip my toes into this space. [06:18.190 --> 06:22.490] And, of course, the same issues with making SAOs apply to badges. [06:22.650 --> 06:25.890] It's just the same issues, you know, time, money, and design challenges. [06:26.590 --> 06:29.530] But they, of course, scale for the larger badges. [06:29.830 --> 06:36.670] So, this SAO took about three months for production from design to full completion of the 15 I had planned, tentacles and all. [06:38.010 --> 06:40.570] Yeah, I hand-soldered them, probably not the best idea. [06:40.770 --> 06:42.530] They were very small, 0805 components. [06:42.890 --> 06:45.450] And then, of course, all the tentacles were unique. [06:45.830 --> 06:47.730] They were about $13-$15 each. [06:49.190 --> 06:51.250] A lot of that was cost of shipping. [06:52.050 --> 06:55.610] And the real fun and creativity was in creating all the different tentacles. [06:56.130 --> 06:59.870] It's very hard to find, like, very clear hot glue. [06:59.870 --> 07:00.950] So, I had to order some stuff. [07:01.090 --> 07:03.070] It's called Glax from Perligon, if you're curious. [07:03.850 --> 07:05.930] But then we all ended up making it to DEFCON. [07:06.050 --> 07:06.990] So, that was the real win. [07:08.130 --> 07:12.170] And speaking of DEFCON badges, let's go into a little bit of their history. [07:12.670 --> 07:21.530] I found this cool write-up by Henry Dalziel, called DEFCON Hacker Badges, which offers a bit of history, not just about DEFCON badges, really, but electronic badges in general. [07:21.530 --> 07:31.430] As according to this article, the first electronic badge was designed for DEFCON 14 by Joe Grand Kingpin. [07:31.690 --> 07:36.470] And I've included some photos here from Grand's write-up on the badge and the challenges it contained. [07:36.590 --> 07:38.130] So, be sure to check that out. [07:38.330 --> 07:41.130] They produced 6,000 of these badges. [07:41.170 --> 07:43.190] And, of course, you know, it sold out within minutes. [07:43.470 --> 07:46.950] The system was based around a microchip called the PICTEN F202. [07:46.950 --> 07:52.910] It was a 6-pin microprocessor, which controlled the output state of the blue LEDs on the Jolly Roger. [07:53.470 --> 07:57.390] A single push-button switch was used to cycle through the five operating states. [07:57.810 --> 08:00.070] So, you could, like, turn both LEDs on steady. [08:00.250 --> 08:02.390] You could make them blink, or you could do an alternative blinking. [08:02.950 --> 08:07.710] So, it definitely wouldn't be a good badge without some design challenges. [08:07.890 --> 08:15.670] They had wanted to keep the cost down to about $5 per unit between the total badge cost, assembly, testing, and all that. [08:15.670 --> 08:23.310] But, of course, you know, ensuring the battery life would last for the three days, and then creating the artistic design elements of the printed circuit board. [08:23.530 --> 08:30.130] So, all in all, it just, I mean, it looks just what I would imagine a first electronic badge for DEF CON should look. [08:30.130 --> 08:32.290] So, I think they really accomplished that mission. [08:32.410 --> 08:33.170] Props to Kingpin. [08:34.470 --> 08:34.910] Okay. [08:34.970 --> 08:36.990] So, some more recent badges from DEF CON. [08:36.990 --> 08:42.030] I brought two of them, and I'll have them at the badge village or hanging on my backpack if you want to play around with those. [08:42.830 --> 08:54.030] But on the left, we have the DC32 badge, which most of you, if you're around in the con circuit, you probably heard the issues surrounding the entropic engineering, like the Easter egg issue. [08:54.310 --> 08:57.350] And, again, it's all related to the design challenges. [08:57.350 --> 09:00.970] So, I, of course, I didn't update the firmware because I wanted to keep that on there. [09:01.710 --> 09:10.210] Another special thing, though, about this badge was it contained the pre-release Raspberry Pi of the RP2350 microcontroller. [09:10.470 --> 09:20.210] And, apparently, well, I didn't know this, but as of today, there's still a $10,000, like, bug bounty program open for it, as of their press release September of last year. [09:20.210 --> 09:23.930] So, there's a... I don't believe it's closed yet. [09:23.930 --> 09:26.290] So, if you're into the hardware hacking scene, you might want to check that out. [09:27.350 --> 09:38.430] And then, lastly, of course, it's got a fun Game Boy emulator that's a map of the Las Vegas Convention Center floor, including the villages, the CTS, the talk tracks, and then there's some other little challenges built in there. [09:39.390 --> 09:40.710] Okay, so, yeah, that's that. [09:40.830 --> 09:43.610] And then, on the right, we have the DC26 badge, which is really cool. [09:43.650 --> 09:49.490] And it's kind of special to me because it was for my first DEF CON, first hacker conference I ever attended. [09:49.490 --> 09:52.250] And I had no idea I was supposed to, like, deal with it. [09:52.410 --> 09:56.350] So, in all my research, I don't think I realized we were getting electronic badges. [09:56.530 --> 09:59.770] It was very confusing when I showed up and people were like, oh, I've got to do all the things. [10:01.110 --> 10:04.130] But, anyways, Hackaday does have a write-up, which explains it pretty well. [10:04.570 --> 10:08.590] And it just really enforced the fact that it probably is one of the best DEF CON badges ever done. [10:09.530 --> 10:19.390] I might be a little biased, but from the puzzles to the firmware to the fact that you had to, like, desolder the chip and then flip it around just to play, like, the other half of the game, it was pretty wild. [10:20.350 --> 10:28.470] So, I would encourage you, yeah, to definitely, like, if you have questions about the HOPE badge, I was too scared to go, like, talk to anybody about that badge or, like, many people at all. [10:28.470 --> 10:32.170] So, I encourage you to come talk to me at the badge village if you have more questions. [10:33.890 --> 10:34.310] Okay. [10:34.670 --> 10:34.930] So, yeah. [10:35.150 --> 10:39.090] Before we get into the HOPE badges, there's just one more badge I want to share about. [10:39.210 --> 10:40.070] It's a really cool project. [10:41.090 --> 10:43.230] It's associated with the John Conn Conference. [10:43.510 --> 10:45.790] And it is their badge from last year. [10:45.930 --> 10:47.970] It was, like, total Back to the Future vibes. [10:48.290 --> 10:52.530] The badge creators had the brilliant idea to replicate a working modem. [10:52.530 --> 10:54.130] And they called it, huh? [10:54.570 --> 10:54.830] Really? [10:55.130 --> 10:55.430] Yeah. [10:55.830 --> 10:56.770] I mean, just crazy. [10:57.170 --> 11:01.750] So, they called it the JC 0x1 model 31337 modem. [11:01.870 --> 11:07.270] And it allowed you to connect to the conference network and run AT commands like it was 1985. [11:08.290 --> 11:09.390] So, yeah. [11:09.430 --> 11:12.950] This badge was essentially a scaled-down replica of the Haze smart modem. [11:13.130 --> 11:19.570] It was powered by the ESP8266 and the open-source project, the retro Wi-Fi modem project. [11:20.450 --> 11:20.970] So, yeah. [11:21.090 --> 11:21.970] It was really good stuff. [11:22.530 --> 11:27.250] Of course, John Conn being an old-school hacker conference with a focus on students and teaching the next generation. [11:27.250 --> 11:36.090] They wanted to offer that experience to attendees and really give them the opportunity to connect to the Internet or at least networks in a much more tangible way than we do today. [11:37.130 --> 11:40.050] And so, I know there's a couple John Connors out here running around. [11:40.190 --> 11:42.030] Hopefully, you get to meet some of them, talk to them. [11:42.110 --> 11:42.770] I'm one myself. [11:43.090 --> 11:45.030] I've got some stickers for the upcoming Conn. [11:45.050 --> 11:47.910] So, you can come see me at the badge village or, like, just catch me running around. [11:48.650 --> 11:52.290] And John Conn 0x2 is, like, right around the corner, October 10th and 11th. [11:52.330 --> 11:53.330] I can't recommend it more. [11:53.670 --> 11:56.510] It's at Arcadia University in Glenside, PA. [11:56.550 --> 11:58.030] So, I hope to see some of you there. [11:58.170 --> 12:00.330] And don't forget, if you're a student, it is free. [12:00.450 --> 12:03.730] Just make sure you register with your .edu email and you should be good. [12:04.510 --> 12:04.930] Okay. [12:06.150 --> 12:07.390] So, the HOPE badges. [12:09.130 --> 12:10.890] This one on the left was... [12:10.890 --> 12:17.890] I actually was at the DEFCON badge village this year and, like, lo and behold, there it was sitting in the badge museum. [12:18.110 --> 12:19.110] I hadn't seen it before. [12:19.350 --> 12:22.950] I wasn't able to really do more research on functionality before the talk. [12:23.430 --> 12:25.950] But if anyone happens to have one, I'd love to hear more. [12:26.350 --> 12:29.930] And then on the right side, of course, we have the current HOPE badge. [12:31.290 --> 12:41.230] And so now, for the moment you've all been waiting for, let's discuss the issues with getting HOPE 16 to production, the new badge, and aligning the time and sponsorship. [12:42.510 --> 12:50.830] Ultimately, we really ran out of time in approaching our deadline to get the order in for a badge run this year, as we were unable to fund the production run with sponsors. [12:51.290 --> 12:58.390] A lot of our sponsors from last year that had previously expressed interest in supporting again, we just, like, couldn't get a hold of. [12:58.890 --> 13:04.770] Or, you know, they had maybe stepped back and withdrawn that level of support. [13:04.910 --> 13:14.030] And that really, we don't really have many answers as to why, but it has been kind of a difficult year, given, like, worsening geopolitical relations. [13:14.030 --> 13:16.790] And then, of course, the accompanying tariff uncertainty. [13:17.330 --> 13:22.630] And we're definitely not, like, the only conference that I know of that's had issues with getting their badges to production. [13:22.630 --> 13:29.710] So, you know, I'd assume most companies are, like, struggling to watch their bottom line and prepare for the unexpected. [13:30.030 --> 13:42.650] So, last year's badge, of course, though, was supported through a mix of donations in kind with some parts and services provided by PCBWay, as well as additional financial support from other parties like Signal and BeagleBoard. [13:42.750 --> 13:44.370] So, we really appreciate that. [13:44.530 --> 13:48.230] We would love to work with them again if it so worked out. [13:48.790 --> 13:57.290] So, in the end, for this year's badge, we were only able to get commitment from some chips from Espressif, and the rest of parts and services were a no-go. [13:57.470 --> 13:59.450] So, we had to put a pin in that. [14:00.170 --> 14:01.830] Okay, more on the time factor. [14:02.010 --> 14:05.490] You know, HOPE previously was, like, a bi-annual conference happening every other year. [14:05.750 --> 14:11.430] And we normally would have had two years to sort issues like sponsorship or the tariff talk and let everything calm down. [14:11.430 --> 14:21.970] But with the announcement in December that HOPE would be returning for 2025 and the annual thereafter, like, did cut our planning time for production down to about six months this year. [14:21.970 --> 14:24.430] So, that was an additional difficulty. [14:27.570 --> 14:29.070] Yeah, marketing and pivoting. [14:29.190 --> 14:35.390] I mean, so, given this year's issue, we do have some ideas on how we can pivot to be less reliant on sponsorship exclusively through third parties. [14:36.070 --> 14:49.330] If we have another development cycle where sponsorship drives up, we were thinking maybe, you know, one option is badge pre-sales to fund the run directly or collaborating with the HOPE conference organizers to plan for part of the ticket price to offset badge production. [14:49.970 --> 14:59.910] And just to note, like, unlike other conferences like DEFCON where cost of an electronic badge is included in the price of your ticket or your, you know, ticket to attend, it's not like that for this conference. [14:59.910 --> 15:01.570] So, or at least not currently. [15:01.570 --> 15:07.090] We did speak to the HOPE organizers, you know, try and open a line of communication and they were, they were great. [15:07.410 --> 15:13.390] We just, our request for accommodation, like, really wasn't early enough and they had already set the, the price point. [15:13.550 --> 15:16.130] So, we didn't have a lot of room to, like, work together on that. [15:16.290 --> 15:18.130] So, maybe something we can do in future. [15:19.930 --> 15:26.230] Since the badge build was going to be a continuation with some improvements, of course, like, we don't have to redesign the badge from scratch for the next run. [15:26.350 --> 15:34.470] We're just continuing to build out on the firmware and then, you know, make pivots as needed for maybe some, some minor design issues from the previous build. [15:35.270 --> 15:42.650] So, we definitely contend to, or intend to keep progress in our development, renew our sponsorship solicitation and make sure we're locked in for next year, hopefully. [15:43.390 --> 15:53.530] But that being said, again, we encourage interested volunteers and potential sponsors to hop in the signal badge chat, send us a message and let us know if they are interested or if they have any questions. [15:56.470 --> 16:01.730] Yes, let's quickly go over some hope badge capabilities, particularly the ESP32C3 chips. [16:02.030 --> 16:10.730] The chip, of course, in the, its firmware enabled the rest of the peripheral functioning, such as the camera, the IR, LEDs, ball to organic compound sensing and all that. [16:10.850 --> 16:20.110] So, last year, just about the only thing working was the lights, the buttons, the IR, and the NFC was not working on at least the main conference version. [16:20.110 --> 16:21.570] I think the pro version had that, though. [16:22.250 --> 16:25.110] And then, this year, Mitch also implemented the TV Be Gone feature. [16:25.250 --> 16:26.510] So, some new work has been done. [16:26.670 --> 16:35.770] And then, I think Pedro was working on the VOC, the Volatile Organic Compound Sensing, which is like that CO2 sensor, which would alert you to areas of insufficient oxygen. [16:36.430 --> 16:45.950] And then, of course, Vinicius has been getting a lot done with expanding the use of the screen add-on, which is a possibility, and then the Wi-Fi and web hosting capabilities. [16:45.950 --> 16:47.710] Yeah, he can demonstrate that for y'all. [16:49.650 --> 16:50.510] So, okay, yeah. [16:50.670 --> 16:51.830] So, then more on the chips. [16:52.590 --> 16:53.770] We've got some documentation. [16:54.250 --> 16:57.050] I highly recommend, if you want to understand that better, just go in. [16:57.210 --> 17:06.650] And there's a... it's pretty step-by-step getting started, give you some more information about, like, what the chip does, how you can work with the ESP IDF and start, like, programming. [17:07.090 --> 17:09.390] Of course, it has a lot of features, Wi-Fi, Bluetooth. [17:09.710 --> 17:14.330] It's got that 32-bit RISC processor and then some other peripherals and security features. [17:15.730 --> 17:22.990] So, you know, again, like, if you're, like, a hardware bug hunter or something like that, like, that would... this would be the toy to, like, test stuff out on. [17:24.530 --> 17:29.470] And Espresso really provides basic hardware and software resources to help application developers use that series. [17:29.470 --> 17:36.990] So, and then, again, like, with the... it's intended for development with Internet of Things applications, so that's pretty cool. [17:37.130 --> 17:38.490] There's a lot of nifty stuff you can do with it. [17:38.790 --> 17:39.710] Something for everyone. [17:40.310 --> 17:40.710] Okay. [17:40.850 --> 17:53.250] And then I put together a Linktree earlier, because I know it's kind of tricky between the Signal Chat, you've got the badge wiki, you've got the GitLab with the original firmware, and then you've got the new GitHub, Vinicius' ESP homework. [17:53.250 --> 17:56.590] So we just popped it all into a Linktree, try and keep it tidy. [17:57.010 --> 18:01.630] And then there's also, like, the WLED display as well, and getting started with MicroPython. [18:01.630 --> 18:02.490] So that should be good. [18:04.250 --> 18:04.650] Okay. [18:04.810 --> 18:04.950] Yeah. [18:05.130 --> 18:06.550] That's about it for my part. [18:06.770 --> 18:07.710] Just thank you. [18:08.010 --> 18:09.130] Thank you for being here. [18:09.470 --> 18:12.090] And I guess you can go ahead and get started. [18:12.190 --> 18:12.310] Yeah. [18:12.450 --> 18:13.630] Welcome to Vinicius. [18:16.790 --> 18:17.570] Do you have any? [18:17.870 --> 18:18.170] Yeah. [18:18.830 --> 18:18.990] Great. [18:19.230 --> 18:19.610] That should be good. [18:20.690 --> 18:21.290] Thank you. [18:24.610 --> 18:27.710] So I want to just, like, start with... [18:27.710 --> 18:29.430] Let me get this badge here. [18:30.370 --> 18:30.810] Yeah. [18:30.870 --> 18:35.270] So last year, we got this badge, and, like, it was given to everyone. [18:35.410 --> 18:36.190] It was like, this is great. [18:36.430 --> 18:37.590] What can I do with this? [18:37.650 --> 18:41.770] And I didn't quite know how to program it. [18:42.170 --> 18:47.270] Eventually, I found a repository with code to do this. [18:47.270 --> 18:49.170] And it was, like, hundreds of lines of code. [18:49.290 --> 18:51.230] And I was like, this is very complicated and overwhelming. [18:51.610 --> 18:53.190] I'm not going to do anything with it. [18:53.210 --> 18:54.170] And I tossed it in the corner. [18:54.310 --> 18:57.610] And I think a bunch of people did that, too, and didn't really use it. [18:57.830 --> 19:01.790] But then later, I realized how to actually program it. [19:01.790 --> 19:02.690] And it was great. [19:02.790 --> 19:10.610] It was a really great playground to develop my skills, to play with the LEDs. [19:11.350 --> 19:13.190] The LED strips, RGB LEDs. [19:13.530 --> 19:14.170] It's fun. [19:14.870 --> 19:16.210] You can write the effect and stuff. [19:16.790 --> 19:19.550] The infrared was cool to play, too. [19:21.590 --> 19:24.090] With, you know, that Mitch added the TV be gone. [19:24.210 --> 19:25.150] But you can do other things. [19:25.550 --> 19:27.410] I can control your devices at home. [19:27.990 --> 19:29.450] You can do... [19:29.450 --> 19:42.030] I have at home another one that is an infrared translator that can receive signals from one remote control and then emit signals to another device. [19:42.230 --> 19:45.690] So I can use the same controller for multiple devices kind of thing. [19:45.910 --> 19:50.490] So there's still, like, a lot you can explore, even with the limited capabilities. [19:51.570 --> 19:55.130] When I added support for... [19:55.130 --> 20:00.250] I added support for a home assistant with ESPHome. [20:00.390 --> 20:03.530] So this can be part of your home automation system. [20:03.530 --> 20:06.750] Like, you can press the buttons and turn on lights at the place, for example. [20:07.130 --> 20:09.610] So that's really... because it has Wi-Fi. [20:10.950 --> 20:12.290] And that's really helpful. [20:14.250 --> 20:22.430] So I'm gonna get a little bit more into details of how to program them in an easy way, an approachable way. [20:23.450 --> 20:25.190] But just to... [20:25.190 --> 20:30.730] I wanna start with, like, some of the capabilities of the device and get some more into details. [20:31.870 --> 20:40.970] So the microchip here is a SP32C3, which is a 32-bit RISC. [20:42.070 --> 20:44.170] And five... and... [20:44.170 --> 20:48.330] It has Wi-Fi and Bluetooth, BLE. [20:49.790 --> 21:01.630] It has... it depends... the memory depends on the badge or the device, but it's usually in that, like, 400 kilobytes RAM or 45 megabytes flash. [21:03.510 --> 21:07.310] And IO has a good number of GPIO 22. [21:07.790 --> 21:14.370] And a lot of them support ADC, analog to digital, so you can measure things. [21:14.370 --> 21:16.370] So it's... it's helpful. [21:17.170 --> 21:24.950] There are lots of peripherals, like, and expansion support, like, for I2C, SPI, Serial. [21:25.730 --> 21:29.450] You have support for PWM on, like, every pin. [21:31.090 --> 21:33.510] And a support for I2C for sound. [21:34.230 --> 21:42.730] So, like, when you compare it to Arduino, like, a lot of people still use Arduino, but, like, this is, like, far superior, at least to the traditional, like, at Mega Arduino. [21:42.730 --> 21:45.290] I know that some Arduinos are now incorporating SP32. [21:47.010 --> 21:48.550] But, like, this gives you a lot. [21:49.110 --> 21:52.010] And they even have, like... well, they have support for USB. [21:53.170 --> 21:56.050] And they have, like, more advanced stuff, like security. [21:57.590 --> 21:59.050] And then the... and the deep sleep. [21:59.170 --> 22:08.450] The deep sleep can be really helpful for, like, IOT devices, but also for badges, because, like, I have this badge here running the entire time, and you wanna... you want it to run for the entire day. [22:14.340 --> 22:21.320] Yeah, for the... Victoria already covered the badge features, and I talked a little bit about it. [22:21.920 --> 22:24.700] One thing I forgot to mention is that it has a... [22:25.400 --> 22:27.620] well, she mentioned that, like, the air quality. [22:28.160 --> 22:34.860] What I did with mine is now I have a screen, added the screen to mine, because it does have the port for the screen. [22:35.080 --> 22:39.240] You just needed to get the screen, though that was not easy to find. [22:41.220 --> 22:43.240] Michael gave it to me, so... [22:43.980 --> 22:44.220] Yeah. [22:44.920 --> 22:48.780] But, yeah, now I can, like, display the air quality on my badge. [22:49.180 --> 22:50.360] I have, like, a little menu. [22:50.600 --> 22:52.940] I programmed this with the SP Home and LVGL. [22:53.620 --> 22:56.860] I can show my name, so it works as a badge. [22:58.260 --> 22:59.320] As a name badge. [23:01.240 --> 23:05.300] I have a QR code that, like, with my contact info that you can scan. [23:05.660 --> 23:09.040] Like, when we meet, like, it even says, like, oh, we met at HOPE 16. [23:10.240 --> 23:11.140] Here's my information. [23:12.600 --> 23:17.320] It's still, like, work in progress, but, like, I also have, like, a button to send an IR command. [23:17.640 --> 23:23.060] The same command that we used in the badge last year, so that the badges will react to it. [23:24.880 --> 23:27.980] So, these are, like, some of the things I did with this badge. [23:27.980 --> 23:31.960] And I also have a reproduction of the original badge using SP Home. [23:33.500 --> 23:42.320] And this one has a IFC or NFC tag and also a reader. [23:42.520 --> 23:44.560] So, you can do stuff with that, too. [23:44.800 --> 23:50.920] I haven't gotten to explore that a lot, but it's another thing you can explore. [23:56.650 --> 23:59.130] So, let's talk about how to program this. [23:59.290 --> 24:01.250] Because you can't just do the hardware. [24:01.450 --> 24:02.210] You need the software, too. [24:04.490 --> 24:08.810] And one way people are used to is the Arduino IDE. [24:09.170 --> 24:11.970] And you can use that for ESP32 devices. [24:12.790 --> 24:15.470] They have support for this Arduino framework. [24:15.470 --> 24:18.410] So, you can reuse libraries and this kind of thing. [24:19.690 --> 24:21.570] So, that's one option to get started. [24:23.550 --> 24:29.430] There is the ESP IDF, which is the expressive platform. [24:30.230 --> 24:32.890] And this framework is actually a lot more powerful than Arduino. [24:33.170 --> 24:39.050] So, if you want to get, like, more advanced stuff, like DeepSleep or, like, I think the PWM, we may need that, too. [24:40.130 --> 24:42.610] So, you want to go with that framework. [24:42.830 --> 24:47.150] So, you're effectively, like, just writing in C++ the same way you do with the Arduino framework. [24:48.090 --> 24:51.830] So, that can be also, like, kind of overwhelming, especially when you're getting started. [24:52.190 --> 24:55.250] You have to write a lot of code to get functionality. [24:56.530 --> 24:59.670] So, there's an easier way to get started, which is ESPHome. [25:01.390 --> 25:04.550] ESPHome, can I, if I open this, is this going to mess up everything? [25:04.810 --> 25:06.050] Yeah, you should be able to pop it open. [25:08.340 --> 25:09.340] Oh, it's not opening. [25:10.020 --> 25:11.740] You can close out and open it. [25:12.140 --> 25:12.500] Okay. [25:13.000 --> 25:15.160] Let's see if I can open it. [25:15.300 --> 25:15.420] Oh. [25:15.620 --> 25:16.680] Yeah, it's open here. [25:16.680 --> 25:19.480] Yeah, ESPHome has a... [25:19.480 --> 25:20.540] How do I hide this? [25:22.740 --> 25:23.440] Oh, yeah. [25:23.680 --> 25:24.000] Sorry. [25:24.100 --> 25:26.320] I'm not familiar with this platform. [25:26.940 --> 25:27.080] Okay. [25:28.100 --> 25:36.560] ESPHome was created to make it easy to create, yes, IoT devices and add to your home, home assistant and automation. [25:37.000 --> 25:40.500] So, their website has a lot of information. [25:41.620 --> 25:43.340] Oh, I opened this a bunch of times. [25:46.160 --> 25:54.360] But, like, the way it works is you write YAML files, like config files like that, where you can specify, like, a sensor. [25:54.520 --> 25:56.500] It affects, like, describing your hardware. [25:56.500 --> 26:01.380] And now, all these components are available to home assistant. [26:01.780 --> 26:05.040] And then, you can, like, use the buttons. [26:05.320 --> 26:07.060] You can read the buttons. [26:07.240 --> 26:16.940] You can read the sensors and send, like, IR signals and interact with them via home assistant. [26:18.120 --> 26:23.060] It also can surface a web API, like a REST API. [26:23.320 --> 26:25.260] You can access it via a web server. [26:25.440 --> 26:26.920] It's actually quite powerful. [26:27.100 --> 26:31.820] And, like, with a little config file, you get a lot of functionality with just a little bit of code. [26:32.300 --> 26:41.280] And this code is usually, like, someone can write this for the badge without any extra behavior. [26:41.280 --> 26:42.940] But you already get a lot of functionality. [26:42.940 --> 26:49.860] And then, you can go, and then, on top of that, just add your behavior, which is really helpful. [26:52.260 --> 26:53.400] How do I go back? [26:53.560 --> 26:53.800] Let's see. [26:54.160 --> 26:54.620] Oh, I know. [26:55.800 --> 26:56.960] You can just enter this. [26:57.080 --> 26:57.520] This one. [26:57.680 --> 26:59.840] And then, control shift to the back of presentation mode. [27:00.180 --> 27:00.960] But you will have to... [27:01.760 --> 27:02.120] Yeah. [27:02.320 --> 27:03.060] I will just scroll here. [27:03.180 --> 27:03.800] It's going to be easier. [27:05.700 --> 27:06.820] And then, just close a second. [27:07.480 --> 27:07.840] Yeah. [27:09.440 --> 27:18.160] So, for the badge, specifically, I have this repository on GitHub. [27:18.500 --> 27:21.100] It's in the link tree that Victoria shared. [27:21.620 --> 27:31.120] And the instructions are there for how to flash your badge with ESPHome. [27:31.580 --> 27:33.480] And I have, like, a list of all the components. [27:33.580 --> 27:41.640] And they link to the ESPHome component, like the LEDs and IR receivers and everything. [27:41.840 --> 27:45.740] Like, if you click on ESPHome, it actually takes you to the component. [27:46.100 --> 27:50.640] Like, ESPHome has a really large library of components. [27:50.660 --> 27:54.160] And you can go there and see, like, how to configure them and everything. [27:54.160 --> 27:55.260] It's very well documented. [27:55.580 --> 27:58.180] So, it's been really good to work with it. [28:00.140 --> 28:08.580] And just to give you a quick idea here, I have a folder for the hardware and a folder for the, like, firmware with, like, my special behavior. [28:09.360 --> 28:13.860] This is the basis for any kind of application or firmware I want to build. [28:13.860 --> 28:20.900] And this is, let's see, there's a lot of frame here. [28:21.040 --> 28:28.980] But, yeah, you, like, configure things like the I2C is the expansion communication port. [28:30.780 --> 28:34.440] The cell that Victoria was talking about, like, it actually supports I2Cs. [28:34.600 --> 28:36.860] And you can even chain devices, which is cool. [28:37.160 --> 28:42.040] But, like, you specify things like binary sensors and buttons that use the GPIO. [28:42.040 --> 28:45.120] And you specify, like, which pin it is and whether it's inverted. [28:46.320 --> 28:48.380] You can set up a pull-up resistor. [28:48.540 --> 28:49.880] The SP32 supports that. [28:49.960 --> 28:51.520] You don't need to add to your circuit. [28:52.240 --> 28:53.280] It's already available. [28:55.860 --> 28:58.560] Yeah, so you can set up, like, the various buttons and so on. [28:58.660 --> 29:01.160] Like, the remote receiver is the IR receiver. [29:01.740 --> 29:02.300] Same thing. [29:04.160 --> 29:04.880] Battery sensor. [29:05.520 --> 29:06.220] And so on. [29:06.380 --> 29:07.360] Just, like, to give an idea. [29:07.560 --> 29:07.900] It's... [29:08.340 --> 29:11.900] You may not know, like, the config specifically, but, like, it's very readable. [29:11.900 --> 29:28.880] And this not only, like, is something you can run, but it's also, like, a specification of the badge of the device that you can then use these even if you want, like, develop on other platforms, like the ESPADF or Python. [29:29.160 --> 29:36.600] You can take this file as the, like, ground truth and something that, like, you can just look at the pins. [29:36.800 --> 29:39.900] Like, it's actually a huge pain to map these sometimes. [29:40.960 --> 29:41.360] And... [29:41.360 --> 29:43.080] But, like, I already did that work. [29:43.200 --> 29:45.940] And with the badges, like, someone can do that work once. [29:46.060 --> 29:49.640] And then if you want to write a firmware, you can reuse that. [29:49.780 --> 29:54.980] So that has been, like, I think, a really nice thing for badge firmware development. [29:56.840 --> 29:58.960] So that was, like, SPHOME for WLED. [30:00.660 --> 30:02.600] So a lot of these badges have LEDs. [30:03.640 --> 30:06.340] And the effects are cool, like the light effects. [30:06.540 --> 30:08.720] Like, this one is not running WLED. [30:08.940 --> 30:11.540] But, like, if you're not familiar, WLED is a... [30:14.700 --> 30:22.500] This project that allows you to flash, this WLED system that allows you to control the LEDs and have, like, various effects. [30:22.800 --> 30:24.620] You can control over the network. [30:24.980 --> 30:27.160] So it's really cool, the effects. [30:27.200 --> 30:28.320] And they look nice. [30:28.400 --> 30:30.580] And so it's a great thing for badges. [30:30.720 --> 30:33.480] Like, if you don't really need, like, behaviors, you can just... [30:33.480 --> 30:35.200] You just want to make it look cool. [30:35.940 --> 30:37.340] WLED is a really good option. [30:40.800 --> 30:47.480] And I do have instructions for how to flash WLED on the HOPE badge. [30:49.100 --> 30:50.240] And there is even... [30:50.240 --> 30:53.720] For WLED, there is even a web installer that makes it really easy. [30:53.980 --> 30:55.840] So you usually, like, flash the firmware. [30:56.040 --> 31:00.840] And then you have to configure to tell it, like, where... [31:00.840 --> 31:05.820] Like, the type and the color order and length of the LED strip. [31:06.480 --> 31:07.920] And the data GPIO. [31:08.020 --> 31:10.980] But I already have this information for you here, so it makes it easy. [31:12.480 --> 31:18.340] You can configure button actions, which can, like, register macros to change the effects and other things. [31:19.260 --> 31:25.300] And you can even do a 2D LED mapping with a matrix like this. [31:25.600 --> 31:28.360] That tells, like, oh, these are the pixels and the numbers. [31:29.120 --> 31:31.340] This is, like, the physical mapping. [31:31.340 --> 31:38.600] And then you can see there I have the effects showing, like, when you select on the WLED controller. [31:39.180 --> 31:43.340] You can see the effects and you can see that on the badge, which is cool. [31:45.360 --> 31:49.840] So a good option for LED heavy badges. [31:51.320 --> 31:54.340] And then the last option I have here is Python. [31:54.640 --> 31:55.940] A lot of people are familiar with Python. [31:57.700 --> 31:59.000] And there are libraries available. [31:59.200 --> 32:00.660] I think it's also kind of... [32:01.380 --> 32:04.820] You need to write a lot of code to get functionality, unlike ESPHome. [32:04.960 --> 32:06.860] But it's easier than C++. [32:07.360 --> 32:08.600] So it can be a good option. [32:08.600 --> 32:12.880] So MicroPython is one of these platforms. [32:13.060 --> 32:14.580] I think there's also CircuitPython. [32:16.320 --> 32:17.340] So you can try that. [32:17.540 --> 32:19.180] Like, you can write stuff like this. [32:21.340 --> 32:21.740] LED... [32:21.740 --> 32:23.460] Oh, this thing is switching. [32:23.740 --> 32:25.060] Oh, it's some examples. [32:25.240 --> 32:27.460] But I can, like, pin and then, like, set it to high and low. [32:27.680 --> 32:31.260] But all in Python and you can change more dynamically, too. [32:32.160 --> 32:32.940] Which is cool. [32:35.340 --> 32:37.840] And we also have instructions. [32:37.840 --> 32:40.820] This is on the HOPE Wiki and it's linked from here. [32:41.340 --> 32:50.320] You effectively download the MicroPython firmware and use the ESP tool to write the flash. [32:51.700 --> 32:55.240] And then you can connect over the serial port. [32:55.440 --> 32:57.020] And you can start, like, doing Python commands. [32:57.240 --> 33:06.160] And there are ways to also kind of install a Python file there that will run whenever you start. [33:06.160 --> 33:09.100] And you can see, like, how to do the Wi-Fi. [33:09.420 --> 33:10.900] We have some examples there. [33:11.120 --> 33:15.220] How to do the NeoPixel, like, the RGB LEDs. [33:17.580 --> 33:18.060] Yeah. [33:18.400 --> 33:21.800] So that's what I had about, like, how to program your badge. [33:22.000 --> 33:24.320] I hope that will help you get started. [33:24.960 --> 33:28.640] Not only, like, building your own badges or... [33:28.640 --> 33:33.740] But also, like, writing codes for the existing badges that you have and play with it. [33:34.200 --> 33:35.100] Hope you have fun. [33:37.360 --> 33:38.160] Q&A. [33:44.230 --> 33:45.270] Thank you so much, friends. [33:45.890 --> 33:49.170] So we're going to go into the Q&A period after I silence my line. [33:50.050 --> 33:55.230] And remember, if you are on Matrix and you have questions, please at tag ManChicken so that I see your question. [33:56.310 --> 33:59.950] And, yeah, if we could get people to form lines for questions. [33:59.950 --> 34:01.550] We have two mics on either side. [34:02.690 --> 34:04.370] Just don't everybody come at once. [34:15.300 --> 34:17.800] Hi, can you tell us about the badge that you were going to do for this year? [34:17.820 --> 34:18.740] Or is it still secret? [34:19.240 --> 34:19.760] Oh, no. [34:20.880 --> 34:22.540] So it's pretty much just... [34:22.540 --> 34:23.360] It's the same one. [34:23.540 --> 34:26.960] It's just that last year we didn't have all the features implemented, number one. [34:27.200 --> 34:35.140] And then, two, I think there was going to be some improvements, like having the badge, like, with the screen. [34:36.060 --> 34:37.200] And so, yeah, we... [34:37.200 --> 34:44.980] Again, like, the last year's badge, the hardware functionality or, like, capabilities, like, what it could have did not match the firmware. [34:45.140 --> 34:50.920] So we pretty much just had, like, buttons, LEDs working, and then the IR so you could, like, trigger other badges. [34:51.720 --> 34:59.420] So, really, it was just, like, more of the same, but more features and a bit more hardware with the screen add-on. [34:59.980 --> 35:00.420] Yeah. [35:00.680 --> 35:02.660] And there was a new... [35:03.300 --> 35:08.180] We were playing with a new air quality sensor, too, that works better, and... [35:08.180 --> 35:12.640] Because this one takes some time to warm up, and it's kind of hard to use sometimes. [35:13.560 --> 35:17.240] And there was an IO expander, too, because we are out of pins. [35:17.740 --> 35:30.260] And so the first two buttons share the GPIO with the USB, and that has a bunch of issues, especially when flashing and trying to look at the serial port at the same time. [35:30.960 --> 35:36.300] So the GPIO expander allows us to have more pins and avoid the conflicts. [35:40.700 --> 35:43.580] We have one person asking if the slides are going to be available. [35:43.740 --> 35:45.300] You guys are going to put those onto the wiki, right? [35:46.240 --> 35:49.620] Yeah, we can upload them on the wiki, and then also I'll make sure... [35:49.620 --> 35:53.840] And I usually upload to, like, my GitHub, like, Jellyfish. [35:53.840 --> 36:00.260] So we can put it in the badge chat and make sure that there's a link somewhere. [36:00.460 --> 36:01.080] And then also... [36:01.080 --> 36:02.480] Well, I can put a link in the wiki. [36:02.660 --> 36:03.280] Yeah, we'll be good. [36:03.780 --> 36:04.480] They'll be out for sure. [36:07.020 --> 36:08.260] Hi, I've got two questions. [36:09.200 --> 36:16.120] First, do you have any aspirations around trying to build, like, puzzles or some, like, social challenges into it? [36:16.160 --> 36:21.280] I know it's kind of, like, very, like, DEF CON badge coded, but, like, do you have any aspirations around that? [36:21.280 --> 36:35.980] And then my second question, which is off in another direction, do you have any thoughts about, like, anything special you do or would do around testing it, both for, like, hardware and software to make sure that, well, the thing you're handing people works? [36:36.300 --> 36:39.980] Just anything outside of standard, like, hardware and software testing methods? [36:41.000 --> 36:41.520] Yeah. [36:42.220 --> 36:49.040] Okay, so the first part, I think it would be really cool when we get it all working to do some additional puzzles. [36:49.040 --> 36:57.460] And, again, like, the whole point of the badges should be, like, immersive and interactive conference experiences and taking, like, your learning experience to the next level. [36:57.460 --> 37:08.600] So I think, absolutely, if we can overcome the logistics issues of getting the badge of running in its full state, then, heck yeah, let's add some other challenges and some cryptography. [37:10.660 --> 37:32.580] Yeah, one thing I would add is that part of my goal with the ESP home badge project is to make it a lot more accessible to people, because once we remove these hurdles, then, like, it's not just us, like, everyone that, like, we really lower the bar, and, [37:32.640 --> 37:37.820] like, a lot more people can then contribute, think about cool challenges and implement themselves. [37:38.480 --> 37:49.860] So I'm hoping that this will let a lot more people create and really leverage the platform, and we'll see more challenges in the future, hopefully. [37:51.420 --> 38:05.600] And then, regarding your question about, like, quality control and testing, I am not sure I have really any information on that, but MSVB probably would, and I can totally connect you with him if you wanted to double-check him on that question. [38:06.000 --> 38:06.260] Yeah. [38:07.300 --> 38:18.860] Yeah, in terms of the software, at least on the ESP home repository, I have CI enabled for testing, and it's just building the firmware. [38:19.620 --> 38:23.960] So it doesn't... and I have, like, LinkedIn, but that's the extent of it. [38:25.380 --> 38:35.540] I think one thing, just a last word here is, like, for me, is that I think playing with these badges and with the community, like, this has been a really nice way to interact more with the community. [38:35.780 --> 38:50.080] I'm back to Victoria, and I met Mitch more closely, and then MSVB, and everybody that's been working on the badge, so that has been, like, a nice experience, and I highly recommend getting involved. [38:51.960 --> 38:52.640] Cool. [38:52.980 --> 38:54.260] Thank you very much, friends. [38:54.760 --> 38:55.960] Thanks for coming. [38:55.960 --> 38:57.140] Thank you. [38:57.140 --> 38:57.160] Thank you.