1 00:00:00,000 --> 00:00:06,200 working in conjunction here with Daryl and team to produce some of these labs and whatnot. 2 00:00:06,440 --> 00:00:09,740 And this particular one is going to be about logic analyzers. 3 00:00:09,740 --> 00:00:11,440 So, my name is Jonathan Sines. 4 00:00:11,440 --> 00:00:14,040 I'm a pen tester on the Rapid7 team. 5 00:00:14,320 --> 00:00:19,860 And just to dive right in, what is the purpose of a logic analyzer? 6 00:00:20,000 --> 00:00:29,350 So, in essence, developers use logic analyzers pretty heavily for doing things such as debugging protocols. 7 00:00:29,350 --> 00:00:43,230 So, if they're doing something like what we see in the picture here that has probably some form of interchip communication, maybe there's like SPI or I2C, logic analyzers enable you to dig down and see underneath the hood what's actually going on. 8 00:00:43,230 --> 00:00:45,330 Works fantastically for troubleshooting. 9 00:00:45,370 --> 00:00:48,210 Just think like Wireshark for hardware analysis. 10 00:00:48,790 --> 00:00:51,710 Like I was mentioning, it could also be used to debug. 11 00:00:51,710 --> 00:00:56,090 So, it's used to troubleshoot maybe why is my software not working? 12 00:00:56,090 --> 00:01:02,050 Why is this embedded firmware not talking from the SPI flash chip to my MCU? 13 00:01:02,350 --> 00:01:05,070 A logic analyzer can kind of help troubleshoot that. 14 00:01:05,070 --> 00:01:11,130 So, that's the sort of developer-y perspective of using a logic analyzer. 15 00:01:11,210 --> 00:01:15,370 Now, how would we use them in IoT? 16 00:01:15,370 --> 00:01:23,530 So, of course, we have the pizza delivery, pizza doom guy, with the ski mask underneath. 17 00:01:23,850 --> 00:01:25,410 We use them in IoT. 18 00:01:26,130 --> 00:01:28,370 Our goal is to dump the firmware. 19 00:01:28,370 --> 00:01:36,690 So, once the firmware is dumped, it's oftentimes mostly dumped through serial interfaces, unless we're doing something like removing a chip. 20 00:01:36,690 --> 00:01:49,930 So, whenever we're talking about this, it's going to be more so focused on from the perspective of doing something like dumping firmware from some type of interface, whether that be UART, whether that be SPI, whether that be I2C. 21 00:01:49,950 --> 00:01:52,690 Also, it's to interact with the device. 22 00:01:52,690 --> 00:02:02,250 I know that if you've attended any of our other talks from today with regard to U-Boot or any of the talks yesterday, we've talked a lot about UART. 23 00:02:02,250 --> 00:02:08,030 So, UART will be the serial, I guess, mechanism that we would use to interact with some of these devices. 24 00:02:08,470 --> 00:02:13,970 So, what we want to do is identify what is the pinout of some of these devices. 25 00:02:13,970 --> 00:02:17,370 And we'll talk a little bit more about that later on in the slides here. 26 00:02:17,370 --> 00:02:21,170 But a lot of times, the pins, they're not labeled. 27 00:02:21,610 --> 00:02:28,250 So, we need to figure out, okay, A, what type of protocol is being used for these pins? 28 00:02:28,250 --> 00:02:34,470 And B, which individual channel is being sent or what kind of data is being transported over those pins? 29 00:02:36,450 --> 00:02:46,730 So, things such as you can check things on a simple serial bus, like SPI, I2S, I2C, UART, things like that using a logic analyzer. 30 00:02:48,970 --> 00:02:51,550 What are the types of logic analyzers? 31 00:02:51,550 --> 00:02:59,070 Again, I know we're kind of talking about maybe some boring stuff, but just to kind of take you a little bit back in time here, the bottom left corner is a desktop logic analyzer. 32 00:02:59,070 --> 00:03:01,030 You don't really see those that much these days. 33 00:03:01,030 --> 00:03:04,970 That looks more like an oscilloscope, but it's, in fact, a logic analyzer. 34 00:03:04,970 --> 00:03:13,050 If you kind of take a closer look, you can see that it's actually measuring digital frequencies, something that an oscilloscope does not do, which we'll talk about more later. 35 00:03:13,470 --> 00:03:24,150 What we will be talking about and looking at in our demos is going to be USB logic analyzers, and those look more like the things you see on the right side of the screen. 36 00:03:24,150 --> 00:03:30,650 So, the Saley is like one of the more popular ones, and you have a couple of the others, like Travelogic in this particular case. 37 00:03:31,210 --> 00:03:35,250 The USB analyzers tend to be cheap, and they tend to be small. 38 00:03:35,790 --> 00:03:39,570 Desktop analyzers tend to be large, and they tend to be expensive. 39 00:03:39,570 --> 00:03:49,970 We'll talk also a little bit about oscilloscopes later, but the logic analyzer has a small amount of memory, but a large number of channels. 40 00:03:49,970 --> 00:03:55,090 That's pretty important, because we'll kind of compare and contrast what might be right for you. 41 00:03:55,090 --> 00:04:01,350 If you're wanting to get started with some of this stuff, what would be best for you with what you're doing with whatever it is that your goal is. 42 00:04:01,750 --> 00:04:05,830 Logic analyzer is a visual representation of the data that it processes as well. 43 00:04:05,830 --> 00:04:23,270 So, when I say that it's a visual representation, it's making the calculation and representing what it thinks is what that data looks like, rather than oscilloscope, which is the actual analog signals that's traversing over the voltages of the chip. 44 00:04:24,630 --> 00:04:32,910 These logic analyzers, we'll talk about price later, but like I was mentioning earlier, USB logic analyzers tend to be very cheap. 45 00:04:34,250 --> 00:04:37,170 Okay, a logic analyzer is not an oscilloscope. 46 00:04:37,170 --> 00:04:42,230 So, all these snippets I stole off the Salie website. 47 00:04:42,530 --> 00:04:48,030 The oscilloscope, it measures... the idea in general is that it's measuring constantly. 48 00:04:48,030 --> 00:04:48,910 It's not like... 49 00:04:49,630 --> 00:04:50,410 This 50 00:04:54,660 --> 00:05:01,800 is quite possibly the most boring slide I've had, so it sucks to be y'all. 51 00:05:02,780 --> 00:05:04,780 I'm just kidding. 52 00:05:05,240 --> 00:05:07,960 They're all equally bad. 53 00:05:08,280 --> 00:05:12,440 So anyways, oscilloscope is not a logic analyzer. 54 00:05:12,440 --> 00:05:19,080 Oscilloscope measures analog, whereas logic analyzers measure digital. 55 00:05:19,080 --> 00:05:25,880 I'm actually glad we went back to this one, because some logic analyzers can actually measure analog. 56 00:05:26,440 --> 00:05:28,120 We'll talk about that a little bit later. 57 00:05:28,120 --> 00:05:29,080 I'll kind of show you. 58 00:05:29,080 --> 00:05:45,220 We'll go over a few different logic analyzers, just to kind of see what... but I probably shouldn't just use like the blanket statement and say that logic analyzers cannot measure analog, because that's not a true statement. 59 00:05:45,220 --> 00:05:48,860 They can to a certain extent, but many of them do not. 60 00:05:51,630 --> 00:05:58,210 So as I was mentioning, they are not used for any type of like UART connection. 61 00:05:58,210 --> 00:06:15,830 So you get data being transmitted over UART, but you can't actually set up like, okay, hey, I want to toss in like, you know, let's connect to this using 8-bit, you know, parity, and then we'll of course do like a quadrate of like 11200 and interact with this device. 62 00:06:16,090 --> 00:06:18,370 That's not what you can do with a logic analyzer. 63 00:06:18,370 --> 00:06:21,330 Logic analyzer is more of just a passive listener. 64 00:06:21,330 --> 00:06:24,850 It's something like Wireshark or hardware. 65 00:06:25,370 --> 00:06:28,830 It's not an oscilloscope. 66 00:06:28,830 --> 00:06:38,630 So from an oscilloscope perspective, basically you're looking at voltages over a period of time. 67 00:06:38,630 --> 00:06:39,930 So it uses memory. 68 00:06:39,930 --> 00:06:41,550 So it's using, say, for 69 00:08:04,230 --> 00:08:07,470 OCD. 70 00:08:07,710 --> 00:08:12,310 So we have the Sabley, right? 71 00:08:12,310 --> 00:08:17,690 So the Sabley is, I don't want to say de facto, but it kind of is de facto. 72 00:08:19,730 --> 00:08:32,350 It's also some software and a pretty large online community and support that is available that goes hand in hand with this particular logic analyzer. 73 00:08:32,350 --> 00:08:39,510 There are other logic analyzers, of course, that exist and we'll look a little bit more about the prices. 74 00:08:39,570 --> 00:08:40,890 What did we pay for these? 75 00:08:40,890 --> 00:08:43,910 Between like 5 and 15, 20 bucks. 76 00:08:43,910 --> 00:08:48,430 I think it was like 12 for one and 24 for the other one. 77 00:08:48,430 --> 00:09:01,110 Very cheap, you know, like go sell like a garbage bag full of, you know, aluminum cans and then buy this stuff because you can just, it's just outrageously cheap. 78 00:09:01,110 --> 00:09:09,390 So anyways, we'll do some pros and cons between all these guys, but we're going to kind of just, let's just go ahead and hook something up with it. 79 00:09:10,630 --> 00:09:14,710 What we're actually going to look at with it is going to be Raspberry Pi. 80 00:09:14,790 --> 00:09:24,170 What we're going to look at also with it is Raspberry Pi has a UART interface. 81 00:09:24,170 --> 00:09:26,430 I'm sure as many of you guys know. 82 00:09:28,770 --> 00:09:34,750 And I'm going to try to just take the examples just to kind of give you an idea. 83 00:09:35,170 --> 00:09:42,250 But here is the Raspberry Pi like sort of coming out and hopefully everyone can see that. 84 00:09:42,250 --> 00:09:44,130 Daryl, is this showing up on the screen? 85 00:09:44,130 --> 00:09:44,850 Yes. 86 00:09:45,550 --> 00:09:46,770 Okay, perfect. 87 00:09:46,830 --> 00:09:52,990 So whenever you're looking at it, it's basically how it's laid out. 88 00:09:52,990 --> 00:09:59,050 So just be aware that it looks good. 89 00:09:59,050 --> 00:09:59,770 Cool. 90 00:09:59,770 --> 00:10:07,230 So as you can see on the screen, we have ground, several grounds. 91 00:10:07,230 --> 00:10:13,690 And then right here on these two, we have Rx and Tx. 92 00:10:13,690 --> 00:10:19,650 So Rx and Tx are the two interfaces that we're going to target for UART. 93 00:10:20,030 --> 00:10:24,450 So if we count down one, two, three, four, it is Rx or Tx rather. 94 00:10:24,450 --> 00:10:28,090 And then one, two, three, four, five, it's Rx. 95 00:10:28,570 --> 00:10:31,870 And then we'll have a ground down here in the bottom left-hand corner. 96 00:10:31,870 --> 00:10:34,070 So let's get this hooked up. 97 00:10:34,350 --> 00:10:42,150 I'm going to start this off with you guys with the, I guess just the matter in this particular case. 98 00:10:42,150 --> 00:10:51,770 But whenever you look at the actual like logic analyzer, you can see that there's like a mapping of the pins on it as well. 99 00:10:51,770 --> 00:10:55,710 So it's basically like channel zero through seven. 100 00:10:55,710 --> 00:10:57,510 And then there's two grounds. 101 00:10:57,510 --> 00:11:05,230 And what that's based off of is the actual like layout of the pins on the thing, and then you have the actual pins. 102 00:11:05,230 --> 00:11:15,410 So what we'll do is we'll take these three jumper wires here, and we're going to actually get rid of the old Raspberry Pi pinout graph. 103 00:11:15,410 --> 00:11:17,470 We're actually just going to move it over that way. 104 00:11:17,670 --> 00:11:22,750 And then we're going to just kind of hook these suckers up. 105 00:11:22,750 --> 00:11:23,610 You know what I mean? 106 00:11:23,610 --> 00:11:24,590 So we'll take ground. 107 00:11:24,590 --> 00:11:25,570 We're just going to use black. 108 00:11:25,570 --> 00:11:29,190 We'll try to be correct with our color usage here. 109 00:11:29,190 --> 00:11:30,530 Black for ground. 110 00:11:30,530 --> 00:11:33,530 So we'll hook that up to one of the two grounds there. 111 00:11:33,710 --> 00:11:36,790 And we'll hook up white to channel zero. 112 00:11:39,820 --> 00:11:44,100 And we'll hook up this like silver color to channel one. 113 00:11:44,560 --> 00:11:49,160 And if you guys think this is fun watching me do this, just wait until we get to the SPI. 114 00:11:49,780 --> 00:11:51,800 So that's exciting. 115 00:11:51,800 --> 00:11:53,020 I'm looking forward to it. 116 00:11:53,160 --> 00:11:58,980 And then as we saw earlier with the ground, this is the bottom left hand corner pointer here. 117 00:11:59,100 --> 00:12:02,820 Remember we hooked up white to channel zero. 118 00:12:02,820 --> 00:12:10,460 We're going to hook white up to channel... it's the fourth pin, so we'll use the TX here. 119 00:12:10,460 --> 00:12:14,320 And we'll hook up this little silver to RX. 120 00:12:14,900 --> 00:12:16,140 And that's it. 121 00:12:16,560 --> 00:12:21,140 So that is pretty much how these hook up. 122 00:12:21,140 --> 00:12:30,940 And we'll look at several other devices, but I just wanted to give everyone an idea so we're not kind of, you know, functioning in the dark here. 123 00:12:30,940 --> 00:12:36,240 So let's put a pin in this and let's circle back to some of the slides here. 124 00:12:36,240 --> 00:12:39,740 So we now know what that looks like. 125 00:12:39,740 --> 00:12:42,280 Now I've done a lot of talking here. 126 00:12:42,380 --> 00:12:45,860 I think we have a couple questions here. 127 00:12:45,980 --> 00:12:47,140 Let me look. 128 00:12:47,160 --> 00:12:48,640 There was one question . 129 00:12:48,640 --> 00:12:51,520 You may have already covered it, but I want to make sure it's asked. 130 00:12:51,520 --> 00:12:52,780 It's in the channel. 131 00:12:52,780 --> 00:13:01,960 Are there any equipment models that you can do experience to come across any models of devices like that? 132 00:13:02,040 --> 00:13:08,160 Yeah, so some do have the capability of doing both analog and digital. 133 00:13:08,280 --> 00:13:12,040 Most of the cheaper ones are only digital. 134 00:13:12,500 --> 00:13:18,100 Now the ones that support analog and digital are typically a little bit more expensive. 135 00:13:18,460 --> 00:13:21,840 And a great example of that is the Salee. 136 00:13:21,840 --> 00:13:24,900 It supports both and a channel. 137 00:13:25,800 --> 00:13:28,660 But yeah, so some models do support it. 138 00:13:28,660 --> 00:13:31,260 Typically you'll be paying a little bit more money for it. 139 00:13:31,260 --> 00:13:44,980 So I would definitely ask yourself, is analog something I truly need for the type of debugging, the type of troubleshooting, the type of development, or the type of hacking that I'll be doing. 140 00:13:44,980 --> 00:13:48,000 One other question here. 141 00:13:48,100 --> 00:13:58,340 So where can somebody buy the cheaper logic analyzers that you're demoing here? 142 00:13:58,340 --> 00:14:07,920 And would they work for newer to IoT versus having a larger investment? 143 00:14:07,920 --> 00:14:10,500 That is a very well-timed question. 144 00:14:12,260 --> 00:14:21,860 This is a couple examples of where you can get some of these logic analyzers. 145 00:14:21,900 --> 00:14:26,920 On the left side of the screen, I pulled this directly from the Salee website. 146 00:14:26,920 --> 00:14:31,160 Again, these are the nicer models that support both analog and digital. 147 00:14:31,200 --> 00:14:39,720 I'll also show everyone here on the call what it looks like and what it means to actually have a nicer one versus not so nice one. 148 00:14:39,720 --> 00:14:47,060 So are you going to be spending, in this case, an example to have on screen, $13 to $24? 149 00:14:47,160 --> 00:14:49,060 Or you can have a peek at that. 150 00:14:49,060 --> 00:14:54,640 But on the left side of the screen here, the pricing is from Salee. 151 00:14:54,640 --> 00:14:56,020 You can buy them on Amazon. 152 00:14:56,020 --> 00:14:57,780 You can buy them on eBay. 153 00:14:57,780 --> 00:15:00,520 You can buy them on Spark. 154 00:15:01,300 --> 00:15:11,300 The prices on the right, the two cheap ones below and above the dude whose wallet is on fire, were off Amazon. 155 00:15:11,300 --> 00:15:15,780 I had this screenshot of that maybe like three or four days ago. 156 00:15:16,100 --> 00:15:29,820 As far as the features between differences in between the cheaper one versus the more expensive one, we'll take a peek at that in a couple of demos, a few slides down the road. 157 00:15:29,820 --> 00:15:31,280 No more questions. 158 00:15:31,280 --> 00:15:32,920 I guess you can move on. 159 00:15:33,340 --> 00:15:34,500 Sweet. 160 00:15:36,740 --> 00:15:41,920 So moving on here, as I talked about earlier, the signaling. 161 00:15:43,060 --> 00:15:56,600 Analog signaling is just continuous changing values, whereas digital is defined values based on a range of voltage that we're going to see with these USB logic analyzers. 162 00:15:57,240 --> 00:16:00,480 Bear in mind, it's not 100% accurate. 163 00:16:00,480 --> 00:16:12,480 So if you're like needing to be like pinpoint accuracy on voltages, the logic analyzer is going to be... I also want to share with you what those digital versus analog signals look like. 164 00:16:12,560 --> 00:16:20,860 So whenever we dive into the software here pretty soon, we can kind of see what those waveforms are and how they differ from one another. 165 00:16:21,240 --> 00:16:31,480 The voltage above a certain threshold is... and digital signaling with logic analyzers is binary. 166 00:16:31,640 --> 00:16:35,500 If it's going low, then that's considered a zero. 167 00:16:35,500 --> 00:16:37,540 If it's going high, it's considered a one. 168 00:16:37,540 --> 00:16:47,240 And that determination is based upon that particular threshold transistor the technology is basically using. 169 00:16:47,460 --> 00:16:53,960 Logic analyzer will sample the voltages at various intervals and reconstruct what that data looks like. 170 00:16:53,960 --> 00:17:00,380 So I just want to kind of just shine a little bit of context as to analog versus digital. 171 00:17:01,400 --> 00:17:08,580 So there's two main types that I've used in my experience. 172 00:17:08,580 --> 00:17:10,740 Your mileage may vary. 173 00:17:10,740 --> 00:17:17,380 I know there's a lot of different other software, I guess, vendors, makers out there. 174 00:17:17,740 --> 00:17:27,820 I'm Mac-based, so I'm going to handcuff the Mac, fortunately, because it would also be capable of running on Linux, too. 175 00:17:27,820 --> 00:17:32,560 So the top left corner is Sigrock's PulseView. 176 00:17:32,560 --> 00:17:40,740 So Sigrock is a manufacturer of logic analyzer as well as software, and PulseView is the actual software name. 177 00:17:40,740 --> 00:17:51,260 Now, what we're going to talk about actually has Sigrock client, and I'll be honest with you, I love the fact that they're open source. 178 00:17:51,260 --> 00:17:52,480 I love the fact that it's free. 179 00:17:52,480 --> 00:18:00,380 Actually, both the software here is free, but the PulseView, the graphical interface, is just not the greatest. 180 00:18:01,120 --> 00:18:04,480 It's more robust, I guess you could say. 181 00:18:04,480 --> 00:18:09,820 So unfortunately, I'm not going to go over it today because it would probably take a little bit too much time. 182 00:18:09,920 --> 00:18:17,300 But to kind of dive in here, what I wanted to do was just kind of compare these two software sets with you. 183 00:18:17,440 --> 00:18:21,220 So with that being said, let's just dive right in. 184 00:18:21,260 --> 00:18:23,460 Let's just take a look here. 185 00:18:23,460 --> 00:18:24,300 Screw it. 186 00:18:26,940 --> 00:18:37,340 So what I want to do first is I want to continue with where we left off with this particular logic analyzer and the more expensive stuff. 187 00:18:37,340 --> 00:18:38,560 How about that? 188 00:18:38,980 --> 00:18:40,780 We've got a couple of wires here. 189 00:18:40,780 --> 00:18:46,220 We've got a power for the Raspberry Pi sitting right here. 190 00:18:46,220 --> 00:18:48,000 I have the USB power stripped here. 191 00:18:48,000 --> 00:18:51,360 I'm just going to kind of power off the Pi real fast. 192 00:18:51,500 --> 00:18:57,240 And we'll go ahead and grab the other cable for our logic analyzer. 193 00:18:57,740 --> 00:18:59,220 That's right there. 194 00:18:59,500 --> 00:19:01,020 Let's go ahead and plug this up. 195 00:19:02,000 --> 00:19:12,160 Now, as we're doing this, again, this is going to power for the logic analyzer. 196 00:19:12,500 --> 00:19:21,890 And what we're going to do next is let me... there we go. 197 00:19:21,890 --> 00:19:22,750 Okay, cool. 198 00:19:22,870 --> 00:19:23,770 We'll do that here. 199 00:19:23,770 --> 00:19:28,450 So I'm going to bring up the software on the other side of the screen here for us. 200 00:19:29,570 --> 00:19:31,850 And the first one we're going to look at is PulseView. 201 00:19:31,850 --> 00:19:35,910 So I just want to kind of give you a quick little demo of what some of this looks like. 202 00:19:35,910 --> 00:19:42,790 So as you can see here, shift that that way, we have everything hooked up on this side of the house. 203 00:19:43,270 --> 00:19:44,990 Remember, we have UART. 204 00:19:45,010 --> 00:19:49,550 So RXTX hooked up to this based off the pinout that we found online. 205 00:19:49,550 --> 00:19:51,430 And, of course, ground's hooked up as well. 206 00:19:51,430 --> 00:19:52,750 We followed the mappings here. 207 00:19:52,750 --> 00:19:55,690 So we're going to kind of take a white box approach with this. 208 00:19:55,690 --> 00:19:57,550 And let's just assume that we know everything already. 209 00:19:57,550 --> 00:20:02,630 So let's assume that we found the data sheet for the device that we're wanting to kind of probe and take a look at. 210 00:20:03,590 --> 00:20:07,730 What we want to do next is from the software here, I'll give you a quick little run through. 211 00:20:07,730 --> 00:20:09,950 So we'll go back to the full screen. 212 00:20:10,290 --> 00:20:12,690 This is the Sigrot PulseView. 213 00:20:12,690 --> 00:20:17,170 So with the PulseView, you can select the device you have plugged into your computer. 214 00:20:17,170 --> 00:20:21,650 And this particular one, the driver that we need is the FX2LAFW. 215 00:20:21,650 --> 00:20:26,710 So we'll select that from the dropdown, and we'll click scan for devices using the driver above. 216 00:20:26,710 --> 00:20:27,970 And then we'll click OK. 217 00:20:27,970 --> 00:20:29,770 And that basically has it hooked up. 218 00:20:29,770 --> 00:20:33,490 So what happens here is an airplane flying above here. 219 00:20:33,490 --> 00:20:35,870 So you'll hear some background to that. 220 00:20:35,870 --> 00:20:40,930 What you see here is that there's eight channels starting at zero and ending at seven. 221 00:20:40,990 --> 00:20:46,750 So that's representing the eight channels that the logic analyzer has. 222 00:20:46,750 --> 00:20:50,350 Remember, it's zero through seven on the logic analyzer. 223 00:20:52,230 --> 00:20:56,530 What we can do is we can lower that because we're only using RX and TX. 224 00:20:56,530 --> 00:20:57,390 Ground is assumed. 225 00:20:57,390 --> 00:20:58,450 You're always going to use ground. 226 00:20:58,450 --> 00:21:00,770 So we want to select D0 and D1. 227 00:21:00,770 --> 00:21:03,210 So we're going to remove some of these other guys here. 228 00:21:03,590 --> 00:21:08,470 Going back to the software here, you can change the amount of sampling that it does. 229 00:21:08,470 --> 00:21:13,610 In this particular case, I have it set at one millisamples per second. 230 00:21:14,430 --> 00:21:17,350 So that's the setting for that. 231 00:21:17,350 --> 00:21:20,790 And we'll talk about that a little bit more whenever we get into salient software. 232 00:21:20,790 --> 00:21:25,630 But the cheaper logic analyzers can sample at a slower rate than the Salie. 233 00:21:25,630 --> 00:21:27,490 So there's a little bit of a limitation here. 234 00:21:27,490 --> 00:21:28,630 And here's the speeds as well. 235 00:21:28,630 --> 00:21:30,430 So we're going to stick 20 kilohertz. 236 00:21:31,370 --> 00:21:33,750 So let's just plug this sucker in. 237 00:21:33,750 --> 00:21:34,630 Let's just see what happens. 238 00:21:34,630 --> 00:21:37,310 So I'm going to hit the power button . 239 00:21:37,690 --> 00:21:40,330 We're going to see the lights come on on the Raspberry Pi right here. 240 00:21:40,610 --> 00:21:43,950 And then I'm going hit the run button. 241 00:21:45,430 --> 00:21:46,610 Whoopsie-daisy. 242 00:21:49,030 --> 00:21:51,130 Try that again. 243 00:21:51,870 --> 00:21:59,530 And then we can click this button here, which makes us keep up with the timing of the actual logic analysis that's taking place. 244 00:22:00,330 --> 00:22:05,490 So we'll see some spikes and voltages as things happen. 245 00:22:05,490 --> 00:22:06,810 Again, this is over UART. 246 00:22:06,810 --> 00:22:12,630 So think of the TTY connection over some type of serial or SSH interface. 247 00:22:12,830 --> 00:22:14,690 Imagine just a boot up of a Raspberry Pi. 248 00:22:14,690 --> 00:22:15,910 So it's just going to do its crap. 249 00:22:15,910 --> 00:22:18,730 And then at the end, it's going to be like, okay, Raspberry login type stuff. 250 00:22:19,270 --> 00:22:25,530 So we'll go ahead and stop it now that we're getting kind of closer towards the end here. 251 00:22:27,910 --> 00:22:29,250 Yeah, that's the last one. 252 00:22:29,250 --> 00:22:33,790 So if we take a look here, this is basically the capture. 253 00:22:33,790 --> 00:22:36,870 I captured for, as you can see, 35 seconds. 254 00:22:37,170 --> 00:22:41,070 So the thing about this, let's go ahead and go back into full screen. 255 00:22:41,070 --> 00:22:45,850 We don't really need the camera so much right now, but we'll go ahead and expand everything back out. 256 00:22:45,850 --> 00:22:52,230 And let's just take a look over here because this is the, let's just pretend again, let's just assume that we know the answer to this. 257 00:22:52,230 --> 00:22:55,690 This is basically where it's just prompting for a login to the UART interface. 258 00:22:56,170 --> 00:23:00,450 So we'll go in here and we'll kind of scroll, scroll, scroll. 259 00:23:01,090 --> 00:23:14,590 And even if you were unsure of which one was RX or TX, you could pretty well assume if you at least knew that these two connections were UART, that this one's going to be TX and this one's going to be RX. 260 00:23:14,590 --> 00:23:15,070 How is that? 261 00:23:15,070 --> 00:23:19,290 Because TX is sending us data and RX is literally a flat line. 262 00:23:19,330 --> 00:23:22,790 So a couple of things there that can kind of help you out. 263 00:23:23,270 --> 00:23:28,510 And one other thing too, is that this particular software does have protocol debuggers. 264 00:23:28,510 --> 00:23:35,850 So let's take a look at that and let's go ahead and remember we set TX to D0 and we set RX to D1. 265 00:23:36,030 --> 00:23:39,590 So another thing too, we already have 11.5.200. 266 00:23:39,590 --> 00:23:42,010 We're going to keep everything else basically default here. 267 00:23:42,550 --> 00:23:48,250 The least significant bit first is correct. 268 00:23:48,250 --> 00:23:54,310 We'll switch that to ASCII and it will come in here and then it should do some decoding for us. 269 00:23:56,070 --> 00:23:57,570 Usually it takes a second. 270 00:24:01,000 --> 00:24:02,660 Let's see if she works here. 271 00:24:09,410 --> 00:24:21,470 Yeah, so again, just a high-level example of the protocol decoding available for this particular PulseView software and some of the stuff you can do. 272 00:24:21,470 --> 00:24:26,050 So it recognizes stop bits, it recognizes frame errors, break conditions, things like that. 273 00:24:26,050 --> 00:24:30,790 Now what I want to also do real quick, we'll just exit completely out of here. 274 00:24:30,810 --> 00:24:32,450 We don't want to save. 275 00:24:32,450 --> 00:24:34,850 Another thing is it's pretty nifty. 276 00:24:34,870 --> 00:24:36,810 PulseView has SIGROC. 277 00:24:36,810 --> 00:24:42,870 They have their own proprietary format where you can save your data and then import it into Saly or other. 278 00:24:42,870 --> 00:24:45,270 You can manipulate it also from the command line. 279 00:24:45,670 --> 00:24:50,130 We want to now switch over to the Logic software from Saly. 280 00:24:50,130 --> 00:24:54,250 So Saly has their own set of software. 281 00:24:54,250 --> 00:24:56,710 They actually have two sets of software that we're going to review. 282 00:24:57,030 --> 00:25:01,370 And what I want to do is... let 283 00:25:05,140 --> 00:25:06,580 me open it up here. 284 00:25:06,660 --> 00:25:17,940 And what I want to do is show you guys both sets of software to kind of show you the epicness of what it has the capability of doing. 285 00:25:17,940 --> 00:25:27,180 So on the left-hand side here, we have the Saly Logic 1.0, 1.2.18 software, I guess, technically. 286 00:25:27,540 --> 00:25:31,180 And in this case, it's very similar. 287 00:25:31,180 --> 00:25:33,220 So remember, here's all the eight channels. 288 00:25:33,220 --> 00:25:35,920 And that's pretty much the situation that we're looking at. 289 00:25:35,920 --> 00:25:38,340 Mind you, remember, this is all digital signaling. 290 00:25:38,340 --> 00:25:45,580 So there's no actual analog signals going on in this particular case. 291 00:25:45,580 --> 00:25:51,040 So very similar to the other software, you can do the same protocol analysis. 292 00:25:51,040 --> 00:25:54,080 So we have, for instance, AsyncSerial, which is UART. 293 00:25:54,540 --> 00:25:59,020 UART is an AsyncSerial communication protocol with I2C and SPI. 294 00:25:59,020 --> 00:26:03,540 So there's a whole list of different protocols supported also by the Saly software. 295 00:26:03,880 --> 00:26:07,080 Your decoded protocols, it can actually decode also. 296 00:26:07,080 --> 00:26:12,540 As we saw earlier with the other software, it decoded it, but it's kind of limited on the amount of information that it can present to you. 297 00:26:12,540 --> 00:26:17,600 The command line is where the SigRoc software is very strong compared to Saly. 298 00:26:17,800 --> 00:26:19,300 There's also annotations. 299 00:26:19,300 --> 00:26:22,680 So with the annotations, you can kind of capture during periods of time. 300 00:26:22,680 --> 00:26:26,440 But the thing I want to show you guys the most here is with logic analyzers. 301 00:26:26,440 --> 00:26:31,360 It's not specific to Saly, but let's just go ahead and power this guy off. 302 00:26:31,360 --> 00:26:35,760 So as you can see on the right-hand side of the screen, the light's now off on the Raspberry Pi. 303 00:26:36,040 --> 00:26:37,840 Let's go ahead and power it back on. 304 00:26:38,200 --> 00:26:40,620 But also, we're capturing for 30 seconds. 305 00:26:40,620 --> 00:26:44,180 Let's just stick to four mega samples per second. 306 00:26:44,300 --> 00:26:47,400 And then we'll go ahead and power the sucker back on while it starts. 307 00:26:47,400 --> 00:26:57,740 So as you can see right here, the only sad panda part about the Saly software is that it doesn't like live view show like the results of what's going on with everything. 308 00:26:57,740 --> 00:27:02,440 So you're kind of like, you're kind of stuck with like, just this kind of boring screen here. 309 00:27:02,440 --> 00:27:07,200 So you can't really see the sort of interactive like, oh, here's like, you know, the waveforms and whatnot. 310 00:27:07,600 --> 00:27:10,800 But whatever, it's all good. 311 00:27:11,080 --> 00:27:17,540 We'll go over some, the 2.0 version of it where it does offer some sexy or gooey stuff. 312 00:27:17,840 --> 00:27:20,560 So here's the output of our capture. 313 00:27:20,560 --> 00:27:31,480 So let's scroll out, and we can see very similar to the pulse view, take this full screen, that there was actually some data captured here, very similar to what we saw earlier. 314 00:27:31,500 --> 00:27:33,400 Now, let's scroll in. 315 00:27:33,400 --> 00:27:38,460 And as we talked about earlier, remember, channel zero is the TX line of the Raspberry Pi. 316 00:27:38,460 --> 00:27:40,060 So of course, we're going to see data. 317 00:27:40,260 --> 00:27:48,900 Now, a couple things is that let's say we want to add a protocol debugger, just like what we did with the pulse view. 318 00:27:48,900 --> 00:27:50,180 Let's go ahead and add this. 319 00:27:50,180 --> 00:27:53,480 We'll say channel zero, the serial, that's the TX channel. 320 00:27:53,480 --> 00:27:55,240 And let's click Autobot, right? 321 00:27:55,240 --> 00:27:59,400 So let's pretend for a second that we do not even know the baud rate of this device. 322 00:27:59,400 --> 00:28:03,780 Let's pretend that we actually think that it's UR, but we actually don't know if it's TX or RX. 323 00:28:03,860 --> 00:28:08,540 We've already actually kind of figured out that it's TX, because remember, channel zero, we're seeing data. 324 00:28:08,540 --> 00:28:10,620 It's transmitting data to us. 325 00:28:10,620 --> 00:28:13,760 RX is a flat line because we're not sending any data back. 326 00:28:14,100 --> 00:28:16,000 So we do not know the baud rate. 327 00:28:16,000 --> 00:28:26,880 Let's just pretend like we want to open up like a screen session or some type of like a serial session with the device over TTY serial, but we do not know the actual bit rate of that serial connection. 328 00:28:27,160 --> 00:28:30,200 So we'll just leave that default, default 9600. 329 00:28:30,200 --> 00:28:32,160 We'll click this little checkbox here, Autobot. 330 00:28:32,160 --> 00:28:34,780 We'll keep everything else default as well. 331 00:28:34,780 --> 00:28:38,760 This is all pretty standard for a normal serial interface on an embedded system. 332 00:28:38,760 --> 00:28:39,420 We'll click save. 333 00:28:39,420 --> 00:28:42,220 We now see the async serial is here in this corner. 334 00:28:43,180 --> 00:28:49,020 And kind of a cool little thing you can do also to help you figure out that baud rate. 335 00:28:49,300 --> 00:28:51,240 This is pretty neat. 336 00:28:51,780 --> 00:28:55,500 Now earlier, I'm going to bring this up for you guys real quick. 337 00:28:55,800 --> 00:29:03,920 In the actual slide presentation, I had this little table here that showed the actual microseconds as well as the baud rate in this table. 338 00:29:03,940 --> 00:29:07,600 So if it's 833 microseconds, it's 1200. 339 00:29:07,820 --> 00:29:09,540 The bit rate is 1200. 340 00:29:09,540 --> 00:29:12,200 If it's 52 microseconds, it's 1,900. 341 00:29:12,560 --> 00:29:15,860 If it's 8 microseconds, it's 1,500. 342 00:29:15,940 --> 00:29:25,380 Now if we go back here, what we can actually do is we see the actual, let's take a look here, the waveform. 343 00:29:25,380 --> 00:29:33,660 So from where the actual rising edge to a falling edge of one complete uniform wave. 344 00:29:33,700 --> 00:29:34,280 Here we go. 345 00:29:34,280 --> 00:29:35,300 It's a good one. 346 00:29:36,640 --> 00:29:40,500 It's super tiny, but I hope you guys can see that. 347 00:29:40,500 --> 00:29:43,020 8.5 microseconds. 348 00:29:43,760 --> 00:29:50,020 It's pretty nifty because that basically tells us what the baud rate is without us even having to measure the baud rate. 349 00:29:50,020 --> 00:29:54,020 So if we go back to our table here, remember 8.5? 350 00:29:54,240 --> 00:29:56,960 8.5 is what it measured as the baud rate. 351 00:29:56,980 --> 00:30:02,360 We look here and 8 microseconds is 11,500. 352 00:30:02,480 --> 00:30:06,340 Remember, digital is never going to be 100% accurate. 353 00:30:06,340 --> 00:30:08,380 It's going to do its best at that representation. 354 00:30:08,380 --> 00:30:09,940 Also, there's latency in the cable. 355 00:30:09,940 --> 00:30:11,940 There's latency in USB 2.0. 356 00:30:11,940 --> 00:30:15,800 In this case, this is one of the cheaper logic analyzers using USB 2.0. 357 00:30:15,800 --> 00:30:17,940 So either way, it's not going to be 100% accurate. 358 00:30:17,940 --> 00:30:24,240 It's going to be like slightly off, but it's safe to assume that it's closest to that number than it is to any of these other numbers. 359 00:30:24,240 --> 00:30:33,000 That being said, let's just do something a little wacky here and just enjoy the luxurious features of the Saley software. 360 00:30:33,200 --> 00:30:35,900 I just lowered the sample time to five seconds. 361 00:30:36,140 --> 00:30:39,440 Remember, if we go back here to the settings, we have it set. 362 00:30:39,440 --> 00:30:41,560 Let's just see it automatically detect. 363 00:30:41,560 --> 00:30:44,220 It's already changed, but let's just put it back to 9600. 364 00:30:44,260 --> 00:30:46,120 Imagine this is like a fresh scan. 365 00:30:46,220 --> 00:30:54,040 We'll power the device off and then we'll power the sucker back on and then we'll go ahead and start sampling. 366 00:30:54,240 --> 00:31:01,240 So based off of the sample rate, the Saley software is smart enough to realize what that particular baud rate is. 367 00:31:01,240 --> 00:31:03,900 In this case, it already converted to us. 368 00:31:03,920 --> 00:31:07,320 Well, that is not the actual bit rate, even though that would probably work. 369 00:31:07,560 --> 00:31:09,060 It's 11,500. 370 00:31:09,600 --> 00:31:12,780 It's close enough for what we're trying to do here. 371 00:31:13,080 --> 00:31:26,540 So let's take it a step further and then let's switch this back over to 30 seconds and let's power it off and then let's power it back on again. 372 00:31:26,660 --> 00:31:30,180 Now that we know our baud rate, we'll just see what it can do. 373 00:31:32,500 --> 00:31:37,400 Let's make it full screen because you all know what a Raspberry Pi looks like. 374 00:31:37,400 --> 00:31:38,760 I can't make it full screen. 375 00:31:38,920 --> 00:31:41,340 I'm going to sit here and just stare at this thing and boot up. 376 00:31:54,090 --> 00:31:56,810 So while we're having a little break, let me ask you one of the questions. 377 00:31:56,810 --> 00:31:58,290 So I have a question here. 378 00:32:00,390 --> 00:32:07,150 Is the Saley or the PulseView Logic Analyzer software free and open source? 379 00:32:07,310 --> 00:32:10,690 How would you go about downloading or purchasing those? 380 00:32:10,970 --> 00:32:14,910 The Saley software, it is actually free. 381 00:32:14,930 --> 00:32:17,110 It is not open source, however. 382 00:32:17,190 --> 00:32:18,450 It's free. 383 00:32:18,450 --> 00:32:20,850 You can download it straight from their website. 384 00:32:21,590 --> 00:32:26,310 You can't compile it because, again, it's not open source, but it's 100% free. 385 00:32:26,310 --> 00:32:28,070 You don't have to spend a dime for it. 386 00:32:28,070 --> 00:32:33,910 However, the Sigrock, so the PulseView software, I believe the GUI is open source. 387 00:32:33,910 --> 00:32:39,630 I know the Sigrock CLI is open source because I just compiled it actually like two hours ago. 388 00:32:40,550 --> 00:32:44,710 But yeah, so the Saley Logic, free, not open source. 389 00:32:44,710 --> 00:32:49,090 Sigrock PulseView, 100% free, maybe open source. 390 00:32:49,090 --> 00:32:52,870 Sigrock CLI, free and open source. 391 00:32:54,530 --> 00:33:07,190 And taking a peek here real quick, we can see in the decoded protocol section here that we actually have the output of what we saw over the UART interface. 392 00:33:07,190 --> 00:33:13,330 So under voltage, it's kind of printed funky here, but that's the actual output of what it's seeing. 393 00:33:13,330 --> 00:33:19,490 We had it set to the ASCII, so the output is being displayed in ASCII format. 394 00:33:19,490 --> 00:33:20,550 So kind of neat. 395 00:33:20,550 --> 00:33:22,190 You can see all that kind of stuff. 396 00:33:22,590 --> 00:33:28,190 Scrolling even further down here, we have detected, blah, blah, blah, but go to the very bottom. 397 00:33:28,330 --> 00:33:34,170 Maybe we missed it, but it would even capture... Yeah, there we go, like Raspberry Pi login. 398 00:33:34,450 --> 00:33:41,570 And that's basically on the UART connection waiting for the typical Pi password, Raspberry, because no one ever changes their default on that. 399 00:33:41,670 --> 00:33:47,430 So anyways, as for that particular demonstration, that's pretty much it. 400 00:33:47,430 --> 00:33:57,330 And kind of continuing on with that particular question that was asked regarding the free and open source nature, are there any other questions, I guess, up until now? 401 00:33:57,990 --> 00:34:00,990 Yeah, I have just one more for you. 402 00:34:00,990 --> 00:34:07,110 What is the max number of logic analyzer channels needed for most IoT situations? 403 00:34:07,850 --> 00:34:09,490 That's a good question. 404 00:34:10,110 --> 00:34:21,150 And I'll be perfectly honest, I rarely run into an instance, I do this, you know, I'm not like hacking on IoT, like full time with my day job. 405 00:34:21,150 --> 00:34:22,150 Again, I'm a pin tester. 406 00:34:22,150 --> 00:34:29,610 But I do it a lot, just kind of as a hobbyist, as well as just kind of as a side type thing. 407 00:34:29,610 --> 00:34:34,830 There's very rare instances that I've run into a situation where I needed more than eight channels. 408 00:34:35,070 --> 00:34:45,350 So in cases that I've ever used these logic analyzers, it's mostly been on three different protocols, UART, SPI, and I2C. 409 00:34:45,350 --> 00:34:53,630 And none of those three, I guess, protocols really require more than eight channels. 410 00:34:53,630 --> 00:34:55,710 Now, I don't want to say it wouldn't be necessary. 411 00:34:55,710 --> 00:35:04,390 But I would say that it's kind of a low likelihood that if you're trying to get started as like a hobbyist, that you'll actually need more than eight channels. 412 00:35:04,390 --> 00:35:18,910 And all of the devices that we're working with here, support eight channels, you can buy them up to like, shoot, I don't even know, I know, I know Morgan on our team has the big one, I think it's six, is it 16 channels? 413 00:35:18,910 --> 00:35:20,050 Is that their biggest? 414 00:35:20,050 --> 00:35:22,390 Or is it the 16? 415 00:35:22,750 --> 00:35:26,110 Yeah, the big, the big boy. 416 00:35:26,110 --> 00:35:28,950 And I don't know that I would like have a need. 417 00:35:28,950 --> 00:35:33,310 However, it would be super handy to have in case I ever did have that need. 418 00:35:33,310 --> 00:35:39,030 But I would probably err on the side of saying that it's likely that eight channels would be good enough for you. 419 00:35:42,280 --> 00:35:44,760 Okay, yeah, no more questions yet. 420 00:35:46,080 --> 00:35:51,380 So speaking of which, UART, SPI, and I2C, how do they function? 421 00:35:51,380 --> 00:35:54,580 So as we saw earlier, UART is an asynchronous connection. 422 00:35:54,580 --> 00:36:03,080 So what that actually means is that there's no clock on either side of the connection, controlling the actual rate that data is being transferred. 423 00:36:03,080 --> 00:36:08,680 It's an agreed upon number where you're supposed to actually know. 424 00:36:08,680 --> 00:36:11,520 So the bit rate and the baud rate is important for that. 425 00:36:11,560 --> 00:36:17,680 How it determines the actual connection speeds also is it uses parity bits. 426 00:36:17,680 --> 00:36:28,320 So there's basically another layer of overhead that's being sent over the line of communication so that the negotiation and the actual transfer of data can take place. 427 00:36:28,320 --> 00:36:35,480 With SPI and I2C, they're actually synchronous, meaning there is a clock that's determining the communication time. 428 00:36:35,620 --> 00:36:40,500 So for instance, SPI operates on a slave master model. 429 00:36:40,500 --> 00:36:44,820 So the master is the actual determination of the clock speed. 430 00:36:44,820 --> 00:36:49,400 That's the one with the actual crystal that's going to determine how quickly data is going to be sent. 431 00:36:49,400 --> 00:36:53,900 The slave is going to basically accept that at that particular rate. 432 00:36:53,920 --> 00:36:57,040 And that number is negotiated throughout the process. 433 00:36:57,040 --> 00:37:00,960 I2C functions in a very similar way. 434 00:37:02,020 --> 00:37:06,960 Moving on to the actual interfaces associated with these three different protocols. 435 00:37:07,260 --> 00:37:09,120 Again, UART has two channels. 436 00:37:09,120 --> 00:37:13,340 Again, the channels column here is assuming that ground's hooked up. 437 00:37:13,340 --> 00:37:15,080 So disregard ground right now. 438 00:37:15,080 --> 00:37:20,680 This is only the data lines and the information communication lines that's taken place that we're really concerned with here. 439 00:37:20,680 --> 00:37:23,280 That's RX and TX for UART. 440 00:37:23,740 --> 00:37:25,920 SPI has four channels. 441 00:37:25,920 --> 00:37:28,040 That's going to be MISO, MOSI, CS, and CLOCK. 442 00:37:28,040 --> 00:37:29,800 Chip select is enable. 443 00:37:29,940 --> 00:37:34,520 And CLOCK is, again, the determination of how quickly that data is going to be sent and received. 444 00:37:34,940 --> 00:37:37,800 MISO and MOSI are a little bit interchangeable. 445 00:37:37,800 --> 00:37:40,080 It can just depend on the situation that's going on. 446 00:37:40,080 --> 00:37:43,220 So with SPI specifically, remember there's master-slave. 447 00:37:43,440 --> 00:37:47,840 The master will send out data to the slave over MOSI. 448 00:37:47,840 --> 00:37:49,960 That stands for master out, slave in. 449 00:37:49,960 --> 00:37:55,340 The master will receive data from the slave over master in, slave out. 450 00:37:55,800 --> 00:37:58,480 The master will determine the clock rate. 451 00:37:58,520 --> 00:38:00,320 And the chip select is the enable. 452 00:38:00,320 --> 00:38:06,640 So the chip select is only applicable whenever there's multiple slaves communicating with a master. 453 00:38:07,440 --> 00:38:09,220 And then I2C is pretty simple. 454 00:38:09,220 --> 00:38:11,180 It's SDA and SCL. 455 00:38:11,240 --> 00:38:17,040 SCL is the communication for the determination of how quickly data is to be sent and received. 456 00:38:17,040 --> 00:38:18,840 And SDA is the actual data line. 457 00:38:19,100 --> 00:38:31,180 So moving on from that, I guess, are there any questions maybe with regard to SPI, those two protocols, with how they apply maybe to logic analyzers? 458 00:38:38,180 --> 00:38:41,480 Maybe not, because I know we just kind of just answered some questions. 459 00:38:41,480 --> 00:38:41,780 I'm sorry. 460 00:38:41,780 --> 00:38:42,840 I was kind of muted. 461 00:38:44,160 --> 00:38:55,360 Currently, we don't have any questions specifically on this, but I do want to encourage people that are in the actual channel as attendees, please think of questions and post them into the Q&A session. 462 00:38:58,080 --> 00:39:00,060 Okay, you can move on, Jonathan. 463 00:39:00,440 --> 00:39:01,180 Cool. 464 00:39:01,180 --> 00:39:06,540 Yeah, I think we had a disabled chat because we had some flattering comments earlier. 465 00:39:06,540 --> 00:39:09,340 That was kind of awesome. 466 00:39:09,720 --> 00:39:15,600 I think Sam was mentioning it was one of the first issues we ran into with something exciting here. 467 00:39:15,740 --> 00:39:18,280 But anyways, okay, so let's move on to the first exercise. 468 00:39:19,480 --> 00:39:22,040 Yeah, so let's move on to the first exercise here. 469 00:39:23,260 --> 00:39:25,200 Actually, I'm going to skip the first exercise. 470 00:39:25,200 --> 00:39:27,480 Let's move on to the second one, because we just looked at UI. 471 00:39:27,480 --> 00:39:28,680 Let's look at something fun. 472 00:39:29,740 --> 00:39:31,280 Switch it over to SPI. 473 00:39:31,300 --> 00:39:35,340 Also, I want to show you the sexiness of this new Salie software as well. 474 00:39:36,880 --> 00:39:39,540 And let's bring up the new hotness here. 475 00:39:39,760 --> 00:39:43,640 I had actually never... I didn't know that Salie had released this new software. 476 00:39:43,640 --> 00:39:44,520 I think it was Morgan. 477 00:39:44,520 --> 00:39:47,480 So Morgan's our lab manager here at Salie. 478 00:39:47,480 --> 00:39:50,460 It was either he or Daryl that had pointed this one out. 479 00:39:50,460 --> 00:39:55,900 But Daryl showed me some freaking sweet new features that basically have to do with this new software. 480 00:39:55,900 --> 00:40:02,380 So just to give you the quick rundown here, we still have... I'm sorry for shifting this screen around and stuff. 481 00:40:02,380 --> 00:40:07,900 But remember, we still have the old school... not the old school, the cheaper end logic analyzer hooked up. 482 00:40:07,900 --> 00:40:09,140 We're about to switch over to Salie though. 483 00:40:09,140 --> 00:40:10,620 I want to show you guys some other stuff. 484 00:40:11,160 --> 00:40:14,920 So this is the new Salie Logic 2 software. 485 00:40:14,920 --> 00:40:16,320 So we're now at 2. 486 00:40:16,340 --> 00:40:19,200 And you can change the amount of channels, of course, that are hooked up here. 487 00:40:19,200 --> 00:40:24,700 You can change the different protocol analyzers associated with the connections that you're making. 488 00:40:25,000 --> 00:40:27,160 There's, of course, timing markers you can set. 489 00:40:27,160 --> 00:40:28,480 There's measurements you can take. 490 00:40:28,480 --> 00:40:31,780 And this is the dopest part, is that there's an extension. 491 00:40:31,780 --> 00:40:32,160 It's like... 492 00:40:32,160 --> 00:40:36,160 I don't know if you guys use Burp Suite that much, but this is the extender. 493 00:40:36,160 --> 00:40:40,000 The extender to Burp Suite is what the extensions are to Logic 2. 494 00:40:40,000 --> 00:40:40,580 It's sick. 495 00:40:40,580 --> 00:40:44,040 You can create extensions and just basically allows you to have a lot of plugins and stuff. 496 00:40:44,040 --> 00:40:47,100 So let's go ahead and swap this guy out. 497 00:40:47,100 --> 00:40:50,960 And we're going to look at a completely different device. 498 00:40:50,960 --> 00:40:53,340 So this Raspberry Pi is going bye-bye. 499 00:40:53,440 --> 00:40:54,560 I'm going to put it over there. 500 00:40:54,560 --> 00:40:56,840 Bunch of pile of other crap I got. 501 00:40:56,960 --> 00:40:59,800 And then we're going to switch to the Salie logic analyzer. 502 00:40:59,820 --> 00:41:03,840 And then also we're going to look at this particular device here. 503 00:41:03,840 --> 00:41:10,780 So I don't know if anyone on the call right now was at the Rapid7 IoT builds last year. 504 00:41:10,780 --> 00:41:13,140 If they were, this will probably look super familiar. 505 00:41:14,120 --> 00:41:15,720 So a couple of things. 506 00:41:15,720 --> 00:41:19,540 As you can see, we have markings for SPI connection. 507 00:41:19,840 --> 00:41:24,120 There you see MISO, MOSI, CS, enable, clock, that kind of stuff. 508 00:41:24,120 --> 00:41:25,900 There's also some other stuff here. 509 00:41:25,900 --> 00:41:26,620 Disregard this. 510 00:41:26,620 --> 00:41:28,440 We're actually only going to use ground. 511 00:41:28,480 --> 00:41:31,060 This is for, I believe, an ICSP connection. 512 00:41:31,060 --> 00:41:33,620 But we're not going to be doing anything with YATML today. 513 00:41:33,620 --> 00:41:39,520 We're going to stick directly to the chip, the flash memory chip that we have on here. 514 00:41:39,520 --> 00:41:46,800 Now, it's going to be an open book situation, but we're also going to pretend like we don't know the pin out of this, just to kind of make it interesting. 515 00:41:47,420 --> 00:41:51,700 We do know it, but I'll show you guys how you can probably make that determination. 516 00:41:51,700 --> 00:42:04,240 Because it's so common that, you know, maybe you'll have like a header pins that are soldered onto the actual VIAs, or maybe they're only VIAs, and you have to solder the header pins yourself, and you have no idea what they are. 517 00:42:04,300 --> 00:42:06,940 And maybe, for instance, you have a WSAN 8. 518 00:42:07,140 --> 00:42:10,380 So, that means WSAN 8, it doesn't have legs. 519 00:42:10,380 --> 00:42:20,680 So, the flash memory chip, it's like all the solder points on the bottom, or if it's BGA, those solder points on the bottom, so you can take a multimeter to figure out what the actual pin out is, even if you found the data sheet. 520 00:42:21,120 --> 00:42:22,720 So, kind of nifty here. 521 00:42:23,880 --> 00:42:25,520 I'll show what that kind of stuff looks like. 522 00:42:25,520 --> 00:42:27,680 So, with that being said, let's just flip this sucker up. 523 00:42:27,680 --> 00:42:33,620 This is the part I was telling you guys about earlier, where I'm just like, you're going to have a good time watching me do this, because there's actually four cables. 524 00:42:33,620 --> 00:42:36,600 This is double the amount of cables as we looked at earlier. 525 00:42:36,840 --> 00:42:41,060 And another little pro tip, actually all four of these cables are not required. 526 00:42:41,100 --> 00:42:52,160 For doing SPI, particularly if you only have one slave connecting to master, you actually only need to connect master out slave in, and clock in order to facilitate that connection. 527 00:42:52,160 --> 00:42:54,580 But just for shits and giggles, let's just connect them all. 528 00:42:54,580 --> 00:43:00,620 Also, I'm going to mooch off the ground interface of this ICSP down here, just to have something. 529 00:43:01,720 --> 00:43:04,540 So, anyways, very similar to what we saw with the other ones. 530 00:43:04,540 --> 00:43:06,740 The mappings of the Salie are here at the bottom. 531 00:43:06,960 --> 00:43:10,700 You can kind of see a little blurry, but my camera's not the greatest quality. 532 00:43:11,040 --> 00:43:11,900 Sorry, guys. 533 00:43:11,900 --> 00:43:14,020 It goes from zero to seven. 534 00:43:14,020 --> 00:43:17,260 And then the channels are on the top, the ground's on the bottom. 535 00:43:17,260 --> 00:43:19,920 You can kind of see there how they're laid out. 536 00:43:19,920 --> 00:43:21,140 So, we're going to just kind of start. 537 00:43:21,140 --> 00:43:22,600 I'm going to plug in ground here first. 538 00:43:22,600 --> 00:43:25,380 I'm going to put it in on the far end on this side. 539 00:43:25,380 --> 00:43:28,900 And then we'll... I'm cheating a little bit. 540 00:43:28,900 --> 00:43:30,300 Remember, you're supposed to pretend. 541 00:43:30,320 --> 00:43:34,240 But master out slave in, I'm going to make that zero. 542 00:43:34,240 --> 00:43:35,480 So, that's red. 543 00:43:35,480 --> 00:43:40,460 So, we're going to start red at zero, and kind of work that way. 544 00:43:40,460 --> 00:43:43,420 You're kind of picking up what I'm throwing down here. 545 00:43:44,080 --> 00:43:55,020 So, red, orange, yellow, green. 546 00:44:00,620 --> 00:44:04,200 And we need to plug this biatch in. 547 00:44:09,220 --> 00:44:14,220 So, yeah, the Salie uses a micro USB. 548 00:44:14,780 --> 00:44:20,700 The other cheaper logic analyzers use the mini USB, as you can see there. 549 00:44:20,700 --> 00:44:23,140 So, we'll grab the micro USB, again, hooked up to my computer. 550 00:44:24,660 --> 00:44:26,240 Let's plug this biatch in. 551 00:44:28,580 --> 00:44:29,880 And you shouldn't see a light. 552 00:44:29,880 --> 00:44:33,560 It's totally normal to, like, not see a light at first with this guy. 553 00:44:34,300 --> 00:44:34,940 And, yeah. 554 00:44:34,940 --> 00:44:36,580 So, let's continue on. 555 00:44:36,580 --> 00:44:39,220 So, let's go ahead and shift the screen over to that side. 556 00:44:39,860 --> 00:44:54,760 And we should now see... so, one beautiful thing is, I don't know if anyone on the call has dealt with Salie before, but it's kind of a pain in the ass sometimes to deal with a logic analyzer and unplugging it back in because you have to close the software and open it again. 557 00:44:54,820 --> 00:44:58,200 Well, Salie 2, I have the software already open, as you can see here at the top. 558 00:44:58,200 --> 00:44:59,880 It's now connected, the light's on. 559 00:44:59,880 --> 00:45:01,660 So, I think it's totally dope. 560 00:45:01,680 --> 00:45:17,240 But, anyways, the Salie software here, going back to the actual device itself, as I'd mentioned earlier, it supports both digital as well as analog. 561 00:45:17,240 --> 00:45:19,260 So, as you can see here, here's the digital. 562 00:45:19,300 --> 00:45:20,420 So, we want to put in four. 563 00:45:20,420 --> 00:45:23,240 We have a total of four channels going on right now. 564 00:45:23,520 --> 00:45:25,740 And we'll just go ahead and do analog and digital. 565 00:45:25,740 --> 00:45:28,540 We'll capture at 10 megasamples per second. 566 00:45:29,160 --> 00:45:33,800 And also, a couple other things. 567 00:45:33,800 --> 00:45:37,300 So, there's three different ways of capturing with this particular one. 568 00:45:37,300 --> 00:45:38,060 There's looping. 569 00:45:38,060 --> 00:45:41,460 So, loop after a predefined amount of time. 570 00:45:41,520 --> 00:45:44,320 There's the timer, where it will record for a period of time. 571 00:45:44,320 --> 00:45:45,400 And there's a trigger. 572 00:45:45,940 --> 00:45:49,000 So, just to kind of demo some stuff, let's go ahead and do a trigger. 573 00:45:49,000 --> 00:45:52,860 So, remember zero... actually, let's not trigger. 574 00:45:52,860 --> 00:45:53,600 Let's just do timer. 575 00:45:53,600 --> 00:45:55,260 Because we're trying to go black box, right? 576 00:45:55,260 --> 00:45:58,840 So, let's assume we don't know which particular channel is which. 577 00:45:58,840 --> 00:46:01,460 And this is just some blind device that we found online. 578 00:46:01,460 --> 00:46:02,460 And we don't know the data sheet. 579 00:46:02,460 --> 00:46:03,740 And it's using something like a WSAN. 580 00:46:03,740 --> 00:46:06,060 So, we have no idea, like, which pin is which. 581 00:46:06,560 --> 00:46:08,100 So, we have all the channels set up. 582 00:46:08,100 --> 00:46:10,320 We have the timer set up for three seconds of capture. 583 00:46:10,760 --> 00:46:12,020 Go down here. 584 00:46:12,100 --> 00:46:14,060 We're going to go ahead and leave the analyzers blank. 585 00:46:14,060 --> 00:46:16,740 And we're pretty much ready to start capturing here. 586 00:46:16,740 --> 00:46:20,660 So, I'm going grab the old power cable for this guy. 587 00:46:22,060 --> 00:46:24,740 And I'm set for three seconds. 588 00:46:24,740 --> 00:46:27,400 So, I kind of need to be quick with my trigger finger here. 589 00:46:29,220 --> 00:46:32,480 There we go. 590 00:46:32,480 --> 00:46:33,700 So, we got full screen. 591 00:46:34,060 --> 00:46:34,440 All right. 592 00:46:34,440 --> 00:46:35,680 She's plugged in. 593 00:46:36,860 --> 00:46:37,620 All right. 594 00:46:37,620 --> 00:46:38,780 So, we got it. 595 00:46:39,000 --> 00:46:40,940 Let's go ahead and zoom out here. 596 00:46:41,060 --> 00:46:45,380 Now, this is the capture that we just got, right? 597 00:46:45,380 --> 00:46:47,120 And this is during the boot up process. 598 00:46:47,360 --> 00:46:51,000 So, what you see here is zero through three channel. 599 00:46:51,000 --> 00:46:52,320 This is all digital. 600 00:46:52,340 --> 00:46:54,960 And on the bottom, it did its best at analog. 601 00:46:54,960 --> 00:46:59,740 And the analog, it's not the greatest. 602 00:46:59,740 --> 00:47:01,640 Like, it's probably pretty accurate. 603 00:47:01,640 --> 00:47:03,880 And you can kind of see the comparison between the two. 604 00:47:03,880 --> 00:47:11,140 Like, it tried its best at measuring those voltages, but probably didn't quite do the greatest that it could. 605 00:47:11,140 --> 00:47:12,760 But either way, there's analog. 606 00:47:12,760 --> 00:47:14,360 I just want to show you guys some of the analog. 607 00:47:14,360 --> 00:47:19,900 And it's cool to have and stuff like that, but it's not really the purpose of what I'm wanting to show you guys right now. 608 00:47:20,200 --> 00:47:29,720 Now, say, for instance, that you don't know the mechanism of... you know that it's SPI, but you don't know which pin's which, right? 609 00:47:29,820 --> 00:47:36,240 So, whenever we're looking at this device, remember, the top here is MISO. 610 00:47:36,240 --> 00:47:37,800 The bottom's MOSI. 611 00:47:37,920 --> 00:47:40,100 Channel zero is master-out-slave-in. 612 00:47:40,100 --> 00:47:49,220 As I mentioned earlier, master-out-slave-in is the information that's basically being transmitted from the actual chip to us. 613 00:47:49,400 --> 00:47:52,240 And it's probably going to be a little bit spontaneous. 614 00:47:52,240 --> 00:47:53,940 There's a lot of opcodes being set. 615 00:47:53,940 --> 00:47:58,000 There's a lot of different various settings being aligned with the actual device. 616 00:47:58,000 --> 00:48:01,740 And typically, that's one of the first things that'll start communicating, as we can see here. 617 00:48:01,740 --> 00:48:03,080 So, we zoom in. 618 00:48:04,060 --> 00:48:09,200 And a little bit telltale thing is that we're starting to see some type of communication taking place right here. 619 00:48:09,200 --> 00:48:10,240 A little sporadic. 620 00:48:10,400 --> 00:48:12,940 We also see right here channel one. 621 00:48:13,920 --> 00:48:16,000 Channel one, in this case, is clock. 622 00:48:16,900 --> 00:48:20,100 Remember, clock is going to actually set the cadence for how it communicates. 623 00:48:20,100 --> 00:48:22,040 1, 2, 3, 4, 5, 6, 7, 8. 624 00:48:22,040 --> 00:48:25,340 It's a full actual byte of data. 625 00:48:25,560 --> 00:48:26,840 That's pretty telltale. 626 00:48:26,840 --> 00:48:33,420 So, right here, of course, channel zero, we have a little bit of some type of sporadic data being actually set. 627 00:48:33,520 --> 00:48:40,820 Channel one, we have kind of a constant cadence of information being... of the waveform itself. 628 00:48:40,840 --> 00:48:47,640 And then enable, what enable is, say, for instance, there's three slaves communicating with the actual master node. 629 00:48:47,780 --> 00:48:54,260 The enable will tell... it'll flip the bit for when that device can communicate or not. 630 00:48:54,280 --> 00:48:59,000 So, you'll oftentimes see... it might be a little bit of a mismatch in our timing, which we can also fix. 631 00:48:59,000 --> 00:49:05,140 But you'll often see with the enable that, for instance, right here, there's basically like a 1, 1, 1. 632 00:49:05,140 --> 00:49:06,420 There's three 1s right here. 633 00:49:06,420 --> 00:49:13,460 It's going to kind of encompass that entire section, if that makes sense, or cycle. 634 00:49:13,720 --> 00:49:23,840 So, it's pretty easy to tell if you just kind of scan it, as we just did, which one's MOSI, which one's clock, and then which one's going to be enable. 635 00:49:23,840 --> 00:49:28,260 Again, enable, in our case, channel two and three is actually not even required. 636 00:49:28,900 --> 00:49:33,320 So, taking a little bit of a deeper dive, let's take a look at the actual protocol in that analyzer. 637 00:49:33,320 --> 00:49:35,140 We'll click SPI here. 638 00:49:35,260 --> 00:49:37,600 Remember, we have MOSI set on zero. 639 00:49:37,600 --> 00:49:39,880 We have MISO set on three. 640 00:49:39,880 --> 00:49:42,620 We have clock set on one. 641 00:49:42,620 --> 00:49:45,160 And we have enable set on two. 642 00:49:45,360 --> 00:49:48,680 We'll leave everything else default, and we'll click save. 643 00:49:48,980 --> 00:49:59,760 Kind of interesting, because you can actually find more deeper information about the actual device and the settings that it's applying as it's booting up. 644 00:50:00,820 --> 00:50:09,480 So, for instance, like right here, this is the actual decoded binary format. 645 00:50:09,480 --> 00:50:16,120 If we go here to the settings, we can change whether it's in binary, decimal, hexadecimal ASCII, and then take a look at the actual value. 646 00:50:16,120 --> 00:50:20,260 So, in this particular case, it's like one, one, zero, zero, one, zero, one, zero. 647 00:50:20,520 --> 00:50:23,480 And that's the actual location where it made the determination. 648 00:50:23,640 --> 00:50:26,320 You can see it up here at the top as well, where it's decoded. 649 00:50:26,500 --> 00:50:34,160 And what's kind of also interesting with this is you can take it a step further, and you can pull up the data sheet of the device. 650 00:50:34,160 --> 00:50:38,200 In this particular case, the model of this is the MRF49XA. 651 00:50:38,400 --> 00:50:41,580 It's a... I believe this one was a SOP8. 652 00:50:41,580 --> 00:50:48,000 I'm not 100% sure on that, but either way, it's just an RF flash memory chip. 653 00:50:48,160 --> 00:50:54,880 So, let's take this code that we got here, one, one, zero, zero, one, zero, one, zero, and let's just copy that. 654 00:50:55,220 --> 00:50:58,260 And then let's go back here, and let's just paste that in. 655 00:50:59,220 --> 00:51:03,240 So, it's... I already had it pulled up, so I'm kind of cheating right now. 656 00:51:03,240 --> 00:51:09,580 So, it's kind of interesting because you can take that, and this is exactly what a developer would do as they're kind of producing these types of devices. 657 00:51:09,660 --> 00:51:16,520 They're going to, like, set these codes, and this is going to sort of initiate the actual SPI flash storage of the chip. 658 00:51:16,520 --> 00:51:21,340 In this particular case, what we saw was one, one, zero, zero, one, zero, one, zero. 659 00:51:22,040 --> 00:51:23,840 Let's paste that in again. 660 00:51:23,840 --> 00:51:24,560 That's right here. 661 00:51:24,560 --> 00:51:34,840 So, we see the command code bit right there, and then we can see here below that bit seven through four are the first in, first out, fill bit counts. 662 00:51:34,840 --> 00:51:35,900 We have bit three. 663 00:51:35,900 --> 00:51:45,260 So, in this particular case, what you want to do is the immediate one below it is you match the next three and then map it back over to bit seven through four. 664 00:51:45,260 --> 00:51:55,180 In this particular... they don't always map, like, seven, like, in a range like that, but in bit three, for instance, like, this guy is set to zero. 665 00:51:56,080 --> 00:51:59,480 Bit three, that basically says synchronous character length bit. 666 00:51:59,500 --> 00:52:01,460 It's set to word long. 667 00:52:02,000 --> 00:52:15,820 So, I don't want to continue going down this rabbit hole here, but it's something that's kind of cool to when, like, when you're debugging, you can kind of map it back to the data sheet to actually figure out what's going on as far as settings being applied to the chip itself. 668 00:52:15,820 --> 00:52:20,760 One other really cool thing I'm going to show everyone here real fast is we're going to make some changes here. 669 00:52:20,760 --> 00:52:24,900 I'm going to go back to the actual mapping of the SPI interface. 670 00:52:24,960 --> 00:52:25,660 Pretty sweet. 671 00:52:26,000 --> 00:52:30,300 I mentioned earlier we don't need MISO and we don't need enable. 672 00:52:30,300 --> 00:52:32,600 So, let's select both of those to none. 673 00:52:32,940 --> 00:52:34,900 And let's do something else. 674 00:52:34,900 --> 00:52:35,740 This is kind of cool. 675 00:52:35,740 --> 00:52:40,540 This is actually a plug-in that you can use with this. 676 00:52:40,640 --> 00:52:44,340 We're going to select SDMMC from SPI. 677 00:52:44,600 --> 00:52:49,560 So, this chip, it's not either an SD nor is it an EMMC chip. 678 00:52:49,560 --> 00:52:50,860 It's just flash storage. 679 00:52:50,860 --> 00:52:58,540 It's not like an SD actual device nor is it a multimedia controller. 680 00:52:58,660 --> 00:53:00,540 But let's just pretend like it is for a second. 681 00:53:00,540 --> 00:53:07,440 You select the input to go into this particular plug-in and then we'll click finish. 682 00:53:07,660 --> 00:53:21,880 And if it were an SD or if it were an EMMC, it'd be pretty sweet because up here, as you can see where I have kind of hovering over, it'll kind of just show you the actual opcodes and the actual information that it's presenting. 683 00:53:21,880 --> 00:53:23,800 It'll kind of interpret that for you. 684 00:53:23,900 --> 00:53:31,760 So, just kind of another sweet feature of the logic analyzer software. 685 00:53:31,760 --> 00:53:34,320 I just want to kind of show you guys that real quick. 686 00:53:35,860 --> 00:53:39,060 And I know we're running kind of low on time. 687 00:53:39,260 --> 00:53:41,580 Darrell, are we kind of towards the end right now? 688 00:53:41,720 --> 00:53:43,720 No, we got time for some questions. 689 00:53:43,740 --> 00:53:46,180 I have a couple questions here before you move on. 690 00:53:46,460 --> 00:53:58,980 So, this is kind of stepping back, but do you have to worry about sample rate with cheaper analyzers, like missing data or misalignments and things like that? 691 00:53:59,640 --> 00:54:02,440 Yeah, that's a good question. 692 00:54:02,660 --> 00:54:15,520 I'll try to answer that with a little demo of what that sample rate actually means for the, like for instance, the Salie logic analyzer, which can have very high sample rates. 693 00:54:15,760 --> 00:54:31,700 The quick and dirty, the TLDR I'll give you is that for the protocols that we're looking at here, for the most part, the sample rates that these two cheaper guys support are satisfactory for what we're needing. 694 00:54:31,700 --> 00:54:38,840 I mean, it's whenever you're diving into the really quick protocols that it really makes a lot more of a difference. 695 00:54:39,000 --> 00:54:58,620 Because a lot of times with the really quick sample rates, like say for instance, let's increase this to... well, I don't know if I'll be able to, because I'll be honest, this logic analyzer can only go up to 50, but like, screw it, let's do it anyway. 696 00:55:00,080 --> 00:55:04,360 Another question on there is similar to that same topic. 697 00:55:04,380 --> 00:55:11,160 Is there a general rule on what samples per second selection that you actually make when you're setting something up? 698 00:55:12,660 --> 00:55:14,780 There's not really a general rule. 699 00:55:14,780 --> 00:55:17,220 It's more of a... this is just my own experience. 700 00:55:17,220 --> 00:55:23,500 Now, Daryl, you might have your own answer for this, but I would say I typically use it for the default, just depending on what it is. 701 00:55:23,500 --> 00:55:27,340 And what I use this for is typically for UART, SPI, and I2C. 702 00:55:27,340 --> 00:55:30,020 I would heavily be interested to hear what you have to say. 703 00:55:30,120 --> 00:55:33,560 Typically, I'm pretty much the same way. 704 00:55:33,700 --> 00:55:48,780 What I will do is if the sample rate's not high enough, I've actually had my Sele start throwing errors and tell me that it was missing data, that it wasn't sampling quick enough. 705 00:55:48,780 --> 00:55:52,420 I had that just recently looking on some Dataflow. 706 00:55:52,660 --> 00:55:59,360 As soon as I kick it off, it'd throw an error in telling me that it was a missample rate. 707 00:55:59,980 --> 00:56:04,440 So, I was able to crank it up until the error went away. 708 00:56:04,440 --> 00:56:16,400 So, again, sometimes I'll also just crank it up out of the blue if I know for a fact that it's a high-speed device that's going to be generating a lot of fast traffic. 709 00:56:16,820 --> 00:56:27,900 Typically, when you're looking at UART, SPI, and stuff like that, amazingly enough, the speed is often not used as even high as the chip can go. 710 00:56:28,120 --> 00:56:34,340 Like UART, I've seen interchip comms on a UART that can literally... the chips are designed to drive at 711 00:56:37,460 --> 00:56:42,180 what, over 3 million bits per second across there. 712 00:56:42,180 --> 00:56:48,620 But yet, the developers of the device had it set up to communicate at 9600 bulb. 713 00:56:49,640 --> 00:56:52,680 That makes sense. 714 00:56:52,680 --> 00:56:52,960 Yeah. 715 00:56:52,960 --> 00:56:57,400 And I've also found that if you go too high, this particular Sele does not support it. 716 00:56:57,400 --> 00:57:06,200 But you also don't want to go too high because if you go too high, this, what you see right here, get out of the screen, it'll just be a giant blob. 717 00:57:06,200 --> 00:57:07,200 It's just a mess. 718 00:57:07,200 --> 00:57:11,220 It's capturing too much sampling and it's kind of just inaccurate at that point. 719 00:57:11,240 --> 00:57:13,740 So, it's a fine line between the two. 720 00:57:14,020 --> 00:57:21,380 And another quick point on that also is, typically, the higher the sample rate, the more memory you're going to eat up to. 721 00:57:22,220 --> 00:57:23,420 That's a point. 722 00:57:24,920 --> 00:57:26,840 Are there any other questions? 723 00:57:30,770 --> 00:57:32,150 Not at this time. 724 00:57:32,930 --> 00:57:33,470 Cool. 725 00:57:33,470 --> 00:57:36,550 And quick question, how much more time do we have here? 726 00:57:36,550 --> 00:57:37,270 Just to make sure. 727 00:57:37,270 --> 00:57:38,650 I don't want to go too far over time. 728 00:57:39,170 --> 00:57:40,570 We've been at it for an hour. 729 00:57:40,570 --> 00:57:43,950 So, I think we got at least another 10 or 15 minutes. 730 00:57:44,730 --> 00:57:45,450 Definitely. 731 00:57:45,450 --> 00:57:47,510 You can definitely go for another 15 minutes. 732 00:57:47,510 --> 00:57:49,490 The next talk starts at 8 PM. 733 00:57:49,870 --> 00:57:50,450 Perfect. 734 00:57:50,450 --> 00:57:51,010 Okay, cool. 735 00:57:51,010 --> 00:57:56,310 I wasn't 100% sure on that, but that works out great because we have one more demo as well. 736 00:57:56,310 --> 00:58:03,970 So, we've talked about... we did a little kind of a cheater exercise on Raspberry Pi. 737 00:58:04,950 --> 00:58:12,350 We did... I showed you guys how to sort of blindly identify SPI as well. 738 00:58:12,850 --> 00:58:15,230 And then next, let's switch back over to UR. 739 00:58:15,230 --> 00:58:17,290 It's more of a real world example. 740 00:58:18,810 --> 00:58:22,870 So, let me go ahead and unplug these guys and plug the power first on this guy here. 741 00:58:24,210 --> 00:58:25,970 Let's switch back here. 742 00:58:25,970 --> 00:58:33,030 Make sure I don't bust off any of these header pins live on camera because this is Daryl's device and it would suck to break it right in front of him. 743 00:58:33,030 --> 00:58:37,650 And let's pull over another device. 744 00:58:38,450 --> 00:58:40,190 That's going to be this guy. 745 00:58:40,930 --> 00:58:45,010 So, we're going to stick to the theme with the Salee. 746 00:58:45,010 --> 00:58:46,990 So, Salee is still going to be used. 747 00:58:47,190 --> 00:58:51,430 In this particular case, we're going to check out UR, but using the new Salee 2 software. 748 00:58:51,770 --> 00:58:57,210 This particular device, it's a Z-Wave hub, I guess, so to speak. 749 00:58:57,210 --> 00:58:59,650 So, it's a hub used in automation. 750 00:59:00,070 --> 00:59:05,950 I'm pretty heavy into home automation here at my place and that's something I've always been fascinated with. 751 00:59:05,950 --> 00:59:09,570 But this particular device, it's a Z-Wave hub. 752 00:59:09,650 --> 00:59:11,370 And let's dig right in. 753 00:59:11,370 --> 00:59:23,230 So , right off the bat, something that can easily be noticed, I guess, is that on this device, there was these three header pins. 754 00:59:23,550 --> 00:59:29,650 I soldered the headers on, but previously it was just three holes just kind of sitting there. 755 00:59:29,650 --> 00:59:37,190 And that's kind of telltale that maybe it might be kind of interesting to kind of poke at. 756 00:59:37,470 --> 00:59:38,830 It can be anything. 757 00:59:38,830 --> 00:59:39,570 It can be I2C. 758 00:59:39,570 --> 00:59:43,850 Maybe there's an EEPROM chip on here that's disclosed or it could be anywhere. 759 00:59:43,850 --> 00:59:45,770 It could also not be on here. 760 00:59:45,770 --> 00:59:55,610 And when I mentioned WSAN earlier, actually, I can't quite tell if this is WSAN or actually a BGA, but either way, same difference. 761 00:59:55,790 --> 01:00:07,270 Sometimes you can't actually see the legs of the device to where you map it out to say, for instance, these headers, but rather sometimes you can, which is what you see right here. 762 01:00:07,270 --> 01:00:09,750 This is a traditional TSOP8. 763 01:00:10,010 --> 01:00:12,030 So, TSOP8, it's got the legs. 764 01:00:12,870 --> 01:00:15,170 WSAN does not. 765 01:00:16,650 --> 01:00:18,130 And I'm pretty sure it's WSAN. 766 01:00:18,130 --> 01:00:20,610 It might be BGA, but I'm pretty confident that it's WSAN. 767 01:00:20,610 --> 01:00:23,050 This one for sure is a BGA microcontroller. 768 01:00:23,050 --> 01:00:32,130 But either way, sometimes you can't take a multimeter to check that this pin right here connects to that pin right there. 769 01:00:32,450 --> 01:00:35,550 So, therefore, sometimes a logic analyzer will come into play. 770 01:00:35,550 --> 01:00:38,450 And then that's where it's usually beneficial to do this type of stuff. 771 01:00:38,450 --> 01:00:39,690 So, let's just move on. 772 01:00:39,690 --> 01:00:42,030 Let's plug this sucker in and see what we get. 773 01:00:50,240 --> 01:00:53,680 So, we only need a couple of connections here. 774 01:00:53,680 --> 01:00:57,040 So, I'm going to borrow the cables that I was using earlier for the UART. 775 01:00:57,040 --> 01:01:01,780 So, in this particular case, there's only three connections being made. 776 01:01:02,580 --> 01:01:10,000 One thing you can do with this is basically take a multimeter to figure out which one's ground. 777 01:01:10,000 --> 01:01:13,080 In that case, let's just assume that I did that because I know which one's ground. 778 01:01:13,080 --> 01:01:17,900 But like, it's pretty easy to tell which one's ground with just a multimeter. 779 01:01:18,800 --> 01:01:23,940 So, and the ground is actually going to be the pin on the far right in this particular case. 780 01:01:23,940 --> 01:01:27,360 So, let's hook up black to ground. 781 01:01:27,940 --> 01:01:34,480 And let's just hook up, you know, white and like this silver one to the other two, not knowing which one's which. 782 01:01:34,480 --> 01:01:43,860 So, again, using the handy dandy mappings that we have on the Stanley, we plug that sucker right in to ground. 783 01:01:44,320 --> 01:01:50,040 And then we plug in the other two to channels zero and one. 784 01:01:50,400 --> 01:01:51,540 Kind of easy. 785 01:01:59,070 --> 01:02:08,630 And next, let's, you know what, let's do a trigger. 786 01:02:09,590 --> 01:02:11,470 We're kind of gambling right now. 787 01:02:12,050 --> 01:02:13,690 We're supposed to be in Vegas right now. 788 01:02:13,690 --> 01:02:16,770 So, again, let's do some type of gambling, right? 789 01:02:16,770 --> 01:02:19,430 We don't know which one's which one's transmit. 790 01:02:19,490 --> 01:02:22,630 But what we're betting on right now is that channel zero is transmit. 791 01:02:22,630 --> 01:02:23,630 We have no idea. 792 01:02:23,810 --> 01:02:25,870 So, let's just figure out that's what it was. 793 01:02:25,870 --> 01:02:28,930 And what we're triggering on is a rising edge. 794 01:02:28,930 --> 01:02:36,550 And what that says is that whenever you see a rising edge in the transmission, in that waveform, that's when you start capturing. 795 01:02:36,750 --> 01:02:39,130 So, in memory, it's capturing the whole time. 796 01:02:39,130 --> 01:02:45,930 But the actual capture that comes back and returns to you is the actual, the trigger that you set here. 797 01:02:45,930 --> 01:02:49,490 You can trigger rising edge, falling edge, high pulse, or low pulse. 798 01:02:49,790 --> 01:02:56,470 In this particular case, let's just say as soon as you see some type of traffic going on on channel one, that's when we want you to capture. 799 01:02:56,470 --> 01:02:58,250 And we want you to capture for three seconds. 800 01:02:58,570 --> 01:03:00,150 Delete everything else afterwards. 801 01:03:00,330 --> 01:03:01,670 And we only need two channels here. 802 01:03:01,670 --> 01:03:02,790 So, let's get rid of those other two. 803 01:03:02,790 --> 01:03:05,450 We're going to leave it at 50 megasamples per second. 804 01:03:05,990 --> 01:03:07,130 And that is that. 805 01:03:07,130 --> 01:03:08,550 We're not going to capture on analog. 806 01:03:08,550 --> 01:03:16,090 So, let's... actually, what we're going to do next is we're going to close out of that. 807 01:03:16,090 --> 01:03:17,110 We're going to click start. 808 01:03:17,870 --> 01:03:19,610 It's literally waiting for the trigger. 809 01:03:19,610 --> 01:03:22,810 So, you see down there in the bottom right-hand corner, waiting for trigger. 810 01:03:22,810 --> 01:03:25,070 Let's plug this bastard in. 811 01:03:26,170 --> 01:03:28,170 Holy shit, we're correct. 812 01:03:29,510 --> 01:03:29,990 Yeah. 813 01:03:29,990 --> 01:03:30,630 So, we... 814 01:03:30,630 --> 01:03:36,370 well, we still have the stupid... let me delete these... the decoders. 815 01:03:37,350 --> 01:03:38,850 This is my bad. 816 01:03:40,270 --> 01:03:41,490 Let me get rid of that. 817 01:03:41,650 --> 01:03:48,990 And yeah, if we're in Vegas, we basically... we bet like 100 bucks on red and it landed on red because it's exactly what happened here. 818 01:03:48,990 --> 01:03:50,830 So, go us, right? 819 01:03:52,110 --> 01:03:54,710 Channel zero is TX, just as we were hoping for. 820 01:03:54,710 --> 01:03:57,470 So, that trigger was met and it recorded for three seconds. 821 01:03:57,970 --> 01:04:01,190 So, scrolling into here, we can see some of the data. 822 01:04:01,190 --> 01:04:03,910 Of course, you know, this is like the zero one, zero one. 823 01:04:04,290 --> 01:04:11,510 And this is the part, as I showed you earlier, with the OG logic analyzer... sorry, the OG logic software. 824 01:04:12,030 --> 01:04:13,430 We'll put input channel. 825 01:04:13,430 --> 01:04:14,770 We're set to zero. 826 01:04:14,770 --> 01:04:15,890 11.5200. 827 01:04:16,190 --> 01:04:18,710 We don't know what the baud rate is for this guy. 828 01:04:18,710 --> 01:04:20,450 I believe it actually is 11.5200. 829 01:04:21,010 --> 01:04:23,430 Remember, we talked about how to check that. 830 01:04:23,450 --> 01:04:24,930 But of course, here we go. 831 01:04:24,970 --> 01:04:27,770 We're seeing all the data as well as part of the boot up. 832 01:04:27,770 --> 01:04:39,290 So, boot SPL 2017 and just various other information that it's printing out, standard out as it's performing the boot sequence. 833 01:04:40,530 --> 01:04:45,550 So, anyways, just wanted to show you guys another example of that on the new software here. 834 01:04:45,690 --> 01:04:47,190 It's pretty slick. 835 01:04:47,190 --> 01:04:48,790 It's totally awesome. 836 01:04:48,790 --> 01:04:50,170 I like it a lot. 837 01:04:51,090 --> 01:04:53,390 You know, it's super useful. 838 01:04:53,390 --> 01:04:54,430 You can see like the parity bits. 839 01:04:54,430 --> 01:05:01,670 This is basically the little white dots is kind of managing the communication timing whenever it's sending data back and forth. 840 01:05:01,670 --> 01:05:03,170 In this case, it's transmitting. 841 01:05:03,870 --> 01:05:08,830 So, anyways, that being said, that's kind of the end of the demo here. 842 01:05:08,830 --> 01:05:17,950 I just want to give another example of what it means to communicate or what it looks like to communicate using the new Saly 2 software. 843 01:05:18,970 --> 01:05:19,850 Questions? 844 01:05:21,710 --> 01:05:23,230 Yeah, let's go ahead. 845 01:05:23,230 --> 01:05:24,950 I think we have some questions. 846 01:05:25,050 --> 01:05:26,690 Let me look at this first. 847 01:05:28,370 --> 01:05:40,950 If the Saly software works for any analyzer, what would be the consideration in purchasing the more expensive offer over a cheaper hardware option shown? 848 01:05:41,510 --> 01:05:56,490 So, why would I want to buy a expensive $600 logic analyzer when I can buy a $24 logic analyzer since I could use the software? 849 01:05:57,110 --> 01:05:58,770 Yeah, that makes sense. 850 01:05:58,770 --> 01:06:13,430 So, as we talked about the speeds, I don't want to say they're negligible, but you do get significantly higher recording speeds with the Saly than you would do with these cheaper versions as well. 851 01:06:13,430 --> 01:06:25,290 Another thing, too, is that the actual accuracy of the protocol decoding I've noticed is higher with the Saly than it is with either of these other two devices. 852 01:06:26,910 --> 01:06:33,010 That being said, it really just depends on what your needs are. 853 01:06:33,110 --> 01:06:35,970 In my opinion, it's pretty good quality. 854 01:06:35,970 --> 01:06:49,650 Like, for instance, I've had a couple of times where I was doing some type of logic, I was doing basically decoding and actually live capture, and I had a crash with the software with both of these devices. 855 01:06:49,950 --> 01:06:52,790 So, you'll notice that it's a little bit sluggish. 856 01:06:52,790 --> 01:06:54,610 It's a little bit rough around the edges. 857 01:06:55,210 --> 01:06:57,230 Again, you kind of get what you pay for. 858 01:06:57,570 --> 01:07:02,730 The communication, again, there's been kind of like lags and hiccups with these two. 859 01:07:02,730 --> 01:07:12,670 They get the job done, but I've noticed that the accuracy for how close of how it captures is a little bit more specific with the Saly. 860 01:07:12,710 --> 01:07:21,010 So, if what you're looking to do is going to require you to know those voltages at more of an accurate level, then maybe consider the Saly versus these guys. 861 01:07:21,010 --> 01:07:27,170 I mean, if you're just doing some general debugging, things like that, I think these are not a bad choice. 862 01:07:27,330 --> 01:07:28,230 That's just my opinion. 863 01:07:28,230 --> 01:07:30,190 Daryl, do you have anything to add to that? 864 01:07:30,310 --> 01:07:40,530 Yeah, I think accuracy is probably one of the bigger things and the ability to process at a higher speed, I think, are the value. 865 01:07:40,530 --> 01:07:43,710 And that's why I went with a higher value product. 866 01:07:44,290 --> 01:07:52,910 Because I personally often encounter things that those would not work on at all, just from the fact that it's higher speed. 867 01:07:52,910 --> 01:08:02,690 I often get into more interchip communication analysis, which is often at a much higher speed than external communication. 868 01:08:03,650 --> 01:08:05,250 Makes sense. 869 01:08:05,390 --> 01:08:08,030 The other question here is a good question. 870 01:08:08,330 --> 01:08:11,230 Do you need special hardware for JTAG? 871 01:08:11,690 --> 01:08:12,110 Yeah. 872 01:08:13,070 --> 01:08:20,950 You know, so if you look here, the capability exists for adding JTAG. 873 01:08:20,950 --> 01:08:21,510 Actually, does it? 874 01:08:21,510 --> 01:08:24,430 I don't know if it does on this logic, too, or not. 875 01:08:24,450 --> 01:08:24,770 I'm still... 876 01:08:24,770 --> 01:08:25,550 I think it does. 877 01:08:25,830 --> 01:08:26,610 I'm not sure. 878 01:08:26,610 --> 01:08:26,890 Yeah , it does. 879 01:08:26,890 --> 01:08:29,230 Yeah, it sure does. 880 01:08:29,350 --> 01:08:34,710 Now, the question was, is there a specific hardware needed for JTAG? 881 01:08:34,710 --> 01:08:45,230 In this case, if you're trying to, like, identify, you know, what is TMS, if you're trying to identify with JTAG, what are those debug interfaces? 882 01:08:45,870 --> 01:08:49,950 You might have the capability of doing it with a logic analyzer. 883 01:08:49,950 --> 01:08:58,710 Now, at that point, you're kind of... I don't want to say you're putting a round peg in a square hole, but I don't know if you're necessarily using the right tool. 884 01:08:58,910 --> 01:09:05,250 It has a capability of doing it like this, but you might consider using other pieces of hardware for doing something like JTAG. 885 01:09:05,250 --> 01:09:10,390 Now, like, for JTAG, say, for instance, you don't know what the pinouts are, and you're trying to identify that. 886 01:09:11,030 --> 01:09:17,990 That's where you would use something like, for me personally, I would go after a multimeter first, and I would try to ring it out with the MCU. 887 01:09:17,990 --> 01:09:29,810 So, I'd try to find the data sheet and use that data sheet to identify where on the MCU, based off those pins of the MCU, where does that fall out, and use that to identify the pinouts of the JTAG. 888 01:09:29,810 --> 01:09:38,010 If you don't have the data sheet, or maybe you don't know where the MCU is, or maybe it's a BGA MCU, then you'd maybe use some type of boundary scanner. 889 01:09:38,010 --> 01:09:40,050 A great example of that is the JTAGulator. 890 01:09:40,230 --> 01:09:45,310 Another thing that you could kind of use the Salee for is a boundary scanner, sort of. 891 01:09:45,650 --> 01:09:49,230 In that particular instance, it could help you, yes. 892 01:09:49,270 --> 01:10:03,370 Now, if you're wanting to do something like program an MCU, or program the device or upload the device to a flash memory to program an MCU, then you would need some type of programmer, and that's going to be vendor-specific. 893 01:10:03,370 --> 01:10:09,670 So, say for instance, it's a STM32, you could use something like a ST-Link device. 894 01:10:09,990 --> 01:10:15,250 J-Link supports OpenOCD in a lot of cases, so it can support multi-manufacturers. 895 01:10:15,310 --> 01:10:17,730 If it's like an Atmel, you'll want to use like a Pickett. 896 01:10:17,730 --> 01:10:27,570 So, if you're wanting to either dump or flash some firmware onto an MCU or flash memory, you'd use whatever programmer is assigned to that particular chipset. 897 01:10:27,590 --> 01:10:38,850 Outside that, you can use a logic analyzer for doing some like limited boundary scanning, but that's kind of not really why it's designed, but the capability exists. 898 01:10:40,030 --> 01:10:46,650 Yep, and on conclusion, there was one comment, there are a couple comments in here I thought were funny. 899 01:10:46,690 --> 01:10:53,430 One was, it would be funny if someone designed a board with a honeypot header that had 50 volts on it. 900 01:10:54,430 --> 01:11:00,950 So, Jonathan would hook up his $300 logic analyzer and watch it burst into flames. 901 01:11:01,470 --> 01:11:04,810 Dear God, yeah, that would fry the man bun right off my head. 902 01:11:05,830 --> 01:11:15,250 So, I thought that was a funny comment, which is definitely the level of evil I would expect from DEF CON, so thank you for that. 903 01:11:16,810 --> 01:11:21,650 And then a couple comments saying you did a good job, so that was pretty good. 904 01:11:21,890 --> 01:11:26,410 So, are there any more questions from anyone as we're getting ready to conclude? 905 01:11:26,410 --> 01:11:28,390 Wait, I think there's one more. 906 01:11:28,850 --> 01:11:32,710 One was asking more like model numbers on those cheaper ones. 907 01:11:32,710 --> 01:11:33,950 Do you have that information? 908 01:11:34,010 --> 01:11:37,050 I think those are so generic in nature. 909 01:11:39,370 --> 01:11:42,110 You know what I'm talking about, the two cheap logic analyzers. 910 01:11:42,110 --> 01:11:44,890 Is there any kind of information on there for acquisition? 911 01:11:44,890 --> 01:11:53,710 I think you had a page that actually showed the link or information to the actual Amazon site. 912 01:11:53,710 --> 01:11:55,970 Yeah, let me see here. 913 01:11:55,970 --> 01:12:03,670 I'll actually just real quickly do one even better for whoever asked the question about that. 914 01:12:04,030 --> 01:12:08,970 Amazon.com, if you just search logic analyzer. 915 01:12:09,250 --> 01:12:14,770 I mean, one of the ones we're using is like... I think it was the first one in the list showed up there at the top. 916 01:12:14,890 --> 01:12:16,110 Yeah, that's one of them. 917 01:12:16,110 --> 01:12:20,110 If you go up to the top, I think the first one in the list was one of them we purchased right there. 918 01:12:20,110 --> 01:12:21,130 That's one of them. 919 01:12:21,150 --> 01:12:25,150 That's the I let go USB one. 920 01:12:26,990 --> 01:12:29,550 I actually have the other one too. 921 01:12:29,550 --> 01:12:35,490 It's kind of funny because it came with the Edify toolkit or whatever. 922 01:12:35,490 --> 01:12:37,510 It's got like a red face to it. 923 01:12:38,930 --> 01:12:42,130 You may have called any number of different names. 924 01:12:42,250 --> 01:12:43,890 Oh, it's SparkFun. 925 01:12:44,010 --> 01:12:45,070 Yeah, SparkFun. 926 01:12:45,070 --> 01:12:49,030 Yeah, SparkFun relabels that Chinese one. 927 01:12:49,910 --> 01:12:50,970 Yeah, it's this one. 928 01:12:50,970 --> 01:12:53,070 So I mean, just go online really. 929 01:12:53,070 --> 01:12:57,610 It's kind of like here's one of them and here's the other. 930 01:12:57,850 --> 01:13:02,530 And it's just you just Google or not Google Amazon search those two. 931 01:13:02,830 --> 01:13:05,010 I'm pretty sure this is exactly both of them. 932 01:13:05,630 --> 01:13:07,030 Yeah, perfect. 933 01:13:08,070 --> 01:13:08,990 Thanks a lot. 934 01:13:08,990 --> 01:13:12,030 Let's see any more questions. 935 01:13:13,470 --> 01:13:15,490 Are hand tech any good? 936 01:13:16,090 --> 01:13:18,610 Have you messed with a hand tech before? 937 01:13:18,830 --> 01:13:20,590 I'm not too sure. 938 01:13:21,210 --> 01:13:24,990 Hand tech logic. 939 01:13:31,250 --> 01:13:33,730 Oh, oscilloscope or the logic analyzer? 940 01:13:33,730 --> 01:13:37,350 Probably logic analyzer since this is a logic analyzer. 941 01:13:37,350 --> 01:13:38,970 I have not. 942 01:13:40,330 --> 01:13:43,970 Well, you were there a minute ago before you checked on the oscilloscope. 943 01:13:43,970 --> 01:13:46,290 There was one showing up there as a logic analyzer. 944 01:13:46,290 --> 01:13:47,170 I'm sure. 945 01:13:48,310 --> 01:13:51,130 And then EK, TEK. 946 01:13:53,270 --> 01:13:55,510 Because we're quickly running out of time here, but... 947 01:13:57,950 --> 01:14:00,190 Oh, I've seen pictures of these guys. 948 01:14:02,970 --> 01:14:06,230 It looks... I mean, it's got two gigs of DDR2 memory. 949 01:14:06,230 --> 01:14:10,590 I mean, it's hella better than I think what any of the Salies have. 950 01:14:10,810 --> 01:14:13,350 So, they're quick and dirty real quick. 951 01:14:13,350 --> 01:14:16,330 But that one, that's a very high sample rate, and that's a lot of memory. 952 01:14:16,330 --> 01:14:22,970 So, higher the memory, the higher the sample rate, the longer you can capture, and the more pinpoint accuracy you can get in those captures. 953 01:14:23,790 --> 01:14:26,370 That's probably, I guess, my two cents on that particular one. 954 01:14:26,370 --> 01:14:27,070 And it looks cool. 955 01:14:27,070 --> 01:14:28,190 Looks dope as hell. 956 01:14:28,550 --> 01:14:35,990 Yeah, I haven't messed with one, so... Okay, I think that pretty much concludes it. 957 01:14:35,990 --> 01:14:40,550 Hopefully, the people that wanted to ask questions were able to ask questions. 958 01:14:40,930 --> 01:14:44,730 Feel free to reach out to any one of us. 959 01:14:45,050 --> 01:14:50,470 Jonathan, you can reach out to him anytime. 960 01:14:50,470 --> 01:14:51,210 He's available. 961 01:14:51,210 --> 01:14:52,770 I think he's on Twitter. 962 01:14:53,710 --> 01:14:56,070 Do you get your Twitter ID out there, man? 963 01:14:56,430 --> 01:14:59,170 Yeah, Twitter ID, frankensteiner. 964 01:14:59,250 --> 01:14:59,790 There you go. 965 01:14:59,790 --> 01:15:01,050 Good luck remembering that. 966 01:15:01,050 --> 01:15:07,950 So, if you ever want to ask him any questions or harassing, there you go. 967 01:15:08,670 --> 01:15:14,570 Yeah, if you want to figure out what my address is, I'll honestly just give it to you, if you're really that curious. 968 01:15:14,810 --> 01:15:18,870 You don't have to do whatever, Google it or whatever, like the person did at the beginning. 969 01:15:19,950 --> 01:15:21,730 Well, hey, thank you so much. 970 01:15:21,730 --> 01:15:24,210 I think there might be a few extra questions. 971 01:15:24,210 --> 01:15:34,930 So, if either of you have time to jump into the IOTV Talk, Questions, Text Discord channel, there's definitely people that were pretty engaged with this talk. 972 01:15:34,930 --> 01:15:41,590 Despite the technical difficulties, this was our first and only live presentation that had any issues. 973 01:15:41,690 --> 01:15:44,310 So, I mean, what are the chances of that? 974 01:15:44,310 --> 01:15:48,170 It's like getting a bird pooping on your head. 975 01:15:48,170 --> 01:15:49,570 Maybe it's good luck. 976 01:15:49,710 --> 01:15:50,830 Nice. 977 01:15:51,010 --> 01:15:52,630 It is good luck.