0 00:00:00,000 --> 00:00:30,000 Dear viewer, these subtitles were generated by a machine via the service Trint and therefore are (very) buggy. If you are capable, please help us to create good quality subtitles: https://c3subtitles.de/talk/613 Thanks! 1 00:00:11,190 --> 00:00:12,419 Hi, everybody. 2 00:00:12,420 --> 00:00:14,639 So let me start by thanking you all for 3 00:00:14,640 --> 00:00:17,279 being here this late on day four 4 00:00:17,280 --> 00:00:19,799 to watch my talk and 5 00:00:19,800 --> 00:00:22,319 let me just start by introducing myself 6 00:00:22,320 --> 00:00:23,459 and what I do. 7 00:00:23,460 --> 00:00:25,559 So I've been an open WTT developer 8 00:00:25,560 --> 00:00:28,169 for more than 10 years now, and 9 00:00:28,170 --> 00:00:29,909 I've been involved with Linux wireless 10 00:00:29,910 --> 00:00:32,669 drivers pretty much almost as long. 11 00:00:32,670 --> 00:00:34,979 And when I started thinking about 12 00:00:34,980 --> 00:00:37,259 what I'm going to talk about here at 13 00:00:37,260 --> 00:00:39,449 this Congress, I, uh, 14 00:00:39,450 --> 00:00:41,489 I kind of looked back to see what are the 15 00:00:41,490 --> 00:00:43,679 really important topics that kind of, 16 00:00:43,680 --> 00:00:46,679 uh, that I think about frequently 17 00:00:46,680 --> 00:00:48,899 in my work with the project. 18 00:00:48,900 --> 00:00:51,089 And one of the main issues that I 19 00:00:51,090 --> 00:00:52,679 come across frequently, being a Linux 20 00:00:53,730 --> 00:00:55,799 driver developer, is 21 00:00:55,800 --> 00:00:58,109 what about freedom to extend 22 00:00:58,110 --> 00:00:59,789 those wireless driver's freedom, to make 23 00:00:59,790 --> 00:01:01,919 changes, to actually have decent 24 00:01:01,920 --> 00:01:03,989 drivers that are upstream and that 25 00:01:03,990 --> 00:01:06,119 are not just usable for simple 26 00:01:06,120 --> 00:01:08,309 purposes of connecting to the existing 27 00:01:08,310 --> 00:01:10,259 network with your laptop, but can 28 00:01:10,260 --> 00:01:12,449 actually be used to build something more 29 00:01:12,450 --> 00:01:14,339 like the free from project building 30 00:01:14,340 --> 00:01:16,559 decentralized mesh networks, like 31 00:01:16,560 --> 00:01:18,419 building your own access points and 32 00:01:18,420 --> 00:01:20,909 maintaining your own infrastructure and 33 00:01:20,910 --> 00:01:22,979 software freedom in that regard and 34 00:01:22,980 --> 00:01:24,689 the freedom to program your own hardware 35 00:01:24,690 --> 00:01:26,459 are kind of a big deal. 36 00:01:26,460 --> 00:01:27,460 So. 37 00:01:28,470 --> 00:01:30,629 Let me first start by saying why 38 00:01:30,630 --> 00:01:32,729 it is such a big deal to 39 00:01:32,730 --> 00:01:35,249 have free drivers here in 40 00:01:35,250 --> 00:01:37,679 many of the existing consumer access 41 00:01:37,680 --> 00:01:39,719 points, as you've probably been aware 42 00:01:39,720 --> 00:01:41,669 during the last time, there are so many 43 00:01:41,670 --> 00:01:44,849 security holes going on, like it's 44 00:01:44,850 --> 00:01:47,159 I've actually spent some time looking 45 00:01:47,160 --> 00:01:49,529 at the tar balls of some of the routers 46 00:01:49,530 --> 00:01:51,629 that were exposed as being fundamentally 47 00:01:51,630 --> 00:01:52,559 insecure. 48 00:01:52,560 --> 00:01:54,719 And I looked at where these security 49 00:01:54,720 --> 00:01:56,519 holes are actually coming from or if it's 50 00:01:56,520 --> 00:01:58,499 something that people spent months 51 00:01:58,500 --> 00:02:00,389 researching or if it's something that's 52 00:02:00,390 --> 00:02:01,619 really simple. 53 00:02:01,620 --> 00:02:03,829 And what I found in many cases 54 00:02:03,830 --> 00:02:06,659 was that it's something where somebody 55 00:02:06,660 --> 00:02:08,999 with a security background just spend 56 00:02:09,000 --> 00:02:11,069 a small bit of time looking 57 00:02:11,070 --> 00:02:12,059 into these devices. 58 00:02:12,060 --> 00:02:13,859 And these were the first holes that fell 59 00:02:13,860 --> 00:02:16,019 out. So I guess you can 60 00:02:16,020 --> 00:02:18,239 you guys can expect for 61 00:02:18,240 --> 00:02:20,309 lots of devices out there that will be 62 00:02:20,310 --> 00:02:21,419 more security holes. 63 00:02:21,420 --> 00:02:23,609 That will be more more 64 00:02:23,610 --> 00:02:25,889 remote exploits probably for 65 00:02:25,890 --> 00:02:28,049 for a device connected to the Internet 66 00:02:28,050 --> 00:02:30,149 simply because all of the code that 67 00:02:30,150 --> 00:02:32,309 runs on there is pretty horrible. 68 00:02:32,310 --> 00:02:34,019 And to be able to change that, you need 69 00:02:34,020 --> 00:02:36,299 to be able to change the wireless drivers 70 00:02:36,300 --> 00:02:38,069 themselves as well, because they're 71 00:02:38,070 --> 00:02:40,139 becoming a lot more complex 72 00:02:40,140 --> 00:02:41,669 and it's a lot harder to figure out 73 00:02:41,670 --> 00:02:42,689 what's going on. 74 00:02:42,690 --> 00:02:44,369 And the more complex a piece of software 75 00:02:44,370 --> 00:02:46,589 is, the usually the easier it is 76 00:02:46,590 --> 00:02:48,539 to find some bugs in there. 77 00:02:48,540 --> 00:02:50,069 And that brings me to the second part, 78 00:02:50,070 --> 00:02:51,179 stability. 79 00:02:51,180 --> 00:02:53,039 Typically, what you have in the normal 80 00:02:53,040 --> 00:02:54,419 consumer access point and with the 81 00:02:54,420 --> 00:02:56,669 drivers that you get provided, 82 00:02:56,670 --> 00:02:58,799 it's something that they tested 83 00:02:58,800 --> 00:03:00,489 in one particular scenario. 84 00:03:00,490 --> 00:03:02,849 They may be test do do a test 85 00:03:02,850 --> 00:03:05,039 where they have some clients connected to 86 00:03:05,040 --> 00:03:07,319 it in an isolated environment and 87 00:03:07,320 --> 00:03:08,879 with a known configuration. 88 00:03:08,880 --> 00:03:11,219 And if you deviate from that one building 89 00:03:11,220 --> 00:03:13,019 your own devices are making changes. 90 00:03:13,020 --> 00:03:15,659 You can expect things to break horribly. 91 00:03:15,660 --> 00:03:17,939 And just as well with these 92 00:03:17,940 --> 00:03:20,339 drivers, you have a huge maintenance 93 00:03:20,340 --> 00:03:22,439 cost simply from the complexity of these 94 00:03:22,440 --> 00:03:23,519 source codes. 95 00:03:23,520 --> 00:03:25,799 And free software goes a long way into 96 00:03:25,800 --> 00:03:27,869 to fixing these kinds of issues at the 97 00:03:27,870 --> 00:03:29,939 core by making sure that code is 98 00:03:29,940 --> 00:03:32,489 public. Code is reviewable for 99 00:03:32,490 --> 00:03:33,959 anybody who wants to see it. 100 00:03:33,960 --> 00:03:35,909 And anybody can help make changes to make 101 00:03:35,910 --> 00:03:37,289 things more simple and more 102 00:03:37,290 --> 00:03:38,609 understandable. 103 00:03:38,610 --> 00:03:40,679 And you can actually then go ahead 104 00:03:40,680 --> 00:03:43,379 and have it features implemented 105 00:03:43,380 --> 00:03:45,149 that are not deemed relevant by the 106 00:03:45,150 --> 00:03:46,379 vendors. 107 00:03:46,380 --> 00:03:47,849 Like I pointed out to you earlier, that 108 00:03:47,850 --> 00:03:49,529 the Triphone project in many places is a 109 00:03:49,530 --> 00:03:51,809 big deal. We've had some talks here about 110 00:03:51,810 --> 00:03:52,709 it as well. 111 00:03:52,710 --> 00:03:54,989 And the ad hoc mode, 112 00:03:54,990 --> 00:03:57,389 I think in many cases is simply not 113 00:03:57,390 --> 00:03:59,339 considered relevant by the chipset 114 00:03:59,340 --> 00:04:00,839 manufacturers at all. 115 00:04:00,840 --> 00:04:03,119 Yet it drives all these huge mesh 116 00:04:03,120 --> 00:04:05,099 networks. So if you don't have free 117 00:04:05,100 --> 00:04:06,719 drivers, how can you get that 118 00:04:06,720 --> 00:04:08,129 implemented? 119 00:04:08,130 --> 00:04:09,809 And so this is this is really what this 120 00:04:09,810 --> 00:04:11,339 talk is all about. 121 00:04:11,340 --> 00:04:13,169 And to put it put it a bit more in 122 00:04:13,170 --> 00:04:15,299 perspective, I'd like to 123 00:04:15,300 --> 00:04:17,249 present to you like my journey through 124 00:04:17,250 --> 00:04:19,859 Linux Wireless, like how I started 125 00:04:19,860 --> 00:04:21,989 with very little freedom and 126 00:04:21,990 --> 00:04:23,610 what changed over time. 127 00:04:24,630 --> 00:04:26,969 So when I began looking into my first 128 00:04:26,970 --> 00:04:29,399 wireless router, there were 50 4G, 129 00:04:29,400 --> 00:04:31,529 we only had a binary only driver for 130 00:04:31,530 --> 00:04:33,659 Linux, two point four, where we did some 131 00:04:33,660 --> 00:04:35,549 really horrible kernel hacks to be able 132 00:04:35,550 --> 00:04:37,709 to to push it forward 133 00:04:37,710 --> 00:04:39,999 and still make some kernel changes. 134 00:04:40,000 --> 00:04:42,269 And it was really hard to keep 135 00:04:42,270 --> 00:04:43,289 the whole thing going. 136 00:04:43,290 --> 00:04:44,669 And we couldn't make any changes to the 137 00:04:44,670 --> 00:04:46,379 wireless driver itself. 138 00:04:46,380 --> 00:04:48,689 And it was only many years later 139 00:04:48,690 --> 00:04:50,819 partially replaced by an open source 140 00:04:50,820 --> 00:04:52,829 driver based on reverse engineering. 141 00:04:52,830 --> 00:04:54,689 But it never had the same degree of 142 00:04:54,690 --> 00:04:57,509 stability as this binary only module. 143 00:04:57,510 --> 00:04:59,789 So, as you can see, not a lot of freedom 144 00:04:59,790 --> 00:05:01,739 going on there, but it was like the best 145 00:05:01,740 --> 00:05:03,479 thing we had at that point to build 146 00:05:03,480 --> 00:05:04,480 access points. 147 00:05:05,720 --> 00:05:07,849 So then came up, came along a bit 148 00:05:07,850 --> 00:05:09,979 later in the game was the Wi-Fi 149 00:05:09,980 --> 00:05:12,199 driver, which is partially 150 00:05:12,200 --> 00:05:14,329 open, has a binary only component that 151 00:05:14,330 --> 00:05:16,729 still runs in kernel context, but 152 00:05:16,730 --> 00:05:18,889 at least it was free of any sort of 153 00:05:18,890 --> 00:05:20,509 kernel version dependencies. 154 00:05:20,510 --> 00:05:22,729 And actually a large part of the driver 155 00:05:22,730 --> 00:05:24,889 was open so we could do a lot 156 00:05:24,890 --> 00:05:26,689 more tests. We could play with the ad hoc 157 00:05:26,690 --> 00:05:28,579 mode, we could play with rate control 158 00:05:28,580 --> 00:05:30,739 algorithms and all these things, but 159 00:05:30,740 --> 00:05:32,749 of course, still not fully free. 160 00:05:32,750 --> 00:05:34,909 And there was still large parts that we 161 00:05:34,910 --> 00:05:37,009 simply could not touch properly 162 00:05:37,010 --> 00:05:39,169 until it was later freed 163 00:05:39,170 --> 00:05:41,659 up by a proper upstream driver. 164 00:05:41,660 --> 00:05:44,209 Of course, this also came years 165 00:05:44,210 --> 00:05:46,699 after after the original project 166 00:05:46,700 --> 00:05:48,529 that was still dependent on non free 167 00:05:48,530 --> 00:05:49,549 binaries. 168 00:05:49,550 --> 00:05:51,709 And it was basically a few years 169 00:05:51,710 --> 00:05:53,809 too late to be really relevant for a 170 00:05:53,810 --> 00:05:55,999 lot of research, because by the time 171 00:05:56,000 --> 00:05:58,159 it became practically usable for many 172 00:05:58,160 --> 00:06:00,049 things, the hardware was already pretty 173 00:06:00,050 --> 00:06:02,479 much outdated and but 174 00:06:02,480 --> 00:06:04,759 it was still a useful prototype for 175 00:06:04,760 --> 00:06:07,079 developing Treleaven 11 features. 176 00:06:07,080 --> 00:06:09,139 So for the core wireless infrastructure 177 00:06:09,140 --> 00:06:11,329 of the Linux kernel and actually used 178 00:06:11,330 --> 00:06:13,549 it myself to develop 179 00:06:13,550 --> 00:06:15,649 the basic form of the ray control 180 00:06:15,650 --> 00:06:17,719 algorithm that is still used by many 181 00:06:17,720 --> 00:06:19,040 drivers in the stack today. 182 00:06:20,160 --> 00:06:21,959 But this was not really the most 183 00:06:21,960 --> 00:06:24,269 interesting part of my time in playing 184 00:06:24,270 --> 00:06:26,339 with Linux Wireless because what came 185 00:06:26,340 --> 00:06:29,099 afterwards was the assigned driver 186 00:06:29,100 --> 00:06:31,349 and now for the first time from 187 00:06:31,350 --> 00:06:33,449 from Atheros, which made the most 188 00:06:33,450 --> 00:06:35,609 popular chipsets in the community, 189 00:06:35,610 --> 00:06:37,229 they actually developed the driver 190 00:06:37,230 --> 00:06:39,629 themselves and they published 191 00:06:39,630 --> 00:06:41,909 it and they upstream, upstream to 192 00:06:41,910 --> 00:06:42,959 themselves. 193 00:06:42,960 --> 00:06:45,269 So this was really a big step forward. 194 00:06:45,270 --> 00:06:47,459 And unlike the the earlier 195 00:06:47,460 --> 00:06:49,889 attempts at doing drivers with mad Wi-Fi, 196 00:06:49,890 --> 00:06:52,139 this one was completely open and 197 00:06:52,140 --> 00:06:53,269 to the last bit. 198 00:06:53,270 --> 00:06:55,469 So you could actually see how it tuned 199 00:06:55,470 --> 00:06:56,679 the radio parameters. 200 00:06:56,680 --> 00:06:58,319 You could influence the code that messed 201 00:06:58,320 --> 00:06:59,549 with the power. 202 00:06:59,550 --> 00:07:01,889 You could change the parts where it sets 203 00:07:01,890 --> 00:07:04,109 the frequency and you could play 204 00:07:04,110 --> 00:07:06,209 with lots of low level radio parameters. 205 00:07:06,210 --> 00:07:08,459 So this was really the dream driver 206 00:07:08,460 --> 00:07:10,619 for research projects, for innovative 207 00:07:10,620 --> 00:07:12,179 things, for building your own access 208 00:07:12,180 --> 00:07:14,699 point and for all that. 209 00:07:14,700 --> 00:07:17,159 But even getting that usable 210 00:07:17,160 --> 00:07:19,379 was kind of a big deal because 211 00:07:19,380 --> 00:07:21,209 they the initial development was only 212 00:07:21,210 --> 00:07:23,519 prompted by customer demand from a laptop 213 00:07:23,520 --> 00:07:26,009 customer. So they wanted to 214 00:07:26,010 --> 00:07:28,079 have Linux on their laptops 215 00:07:28,080 --> 00:07:30,479 where they were shipping with Atheros 216 00:07:30,480 --> 00:07:32,579 wireless cards, and they wanted 217 00:07:32,580 --> 00:07:34,499 it to be usable on Linux itself. 218 00:07:34,500 --> 00:07:36,629 So they forced Qualcomm, 219 00:07:36,630 --> 00:07:37,869 Atheros or Atheros. 220 00:07:37,870 --> 00:07:40,379 That was as it was only known back then 221 00:07:40,380 --> 00:07:42,569 to build this driver and actually 222 00:07:42,570 --> 00:07:44,219 push it upstream. 223 00:07:44,220 --> 00:07:46,229 And this is one of the examples where 224 00:07:46,230 --> 00:07:48,659 actually knowing about 225 00:07:48,660 --> 00:07:51,239 the values of free software doesn't 226 00:07:51,240 --> 00:07:52,979 give you much room in a chipset 227 00:07:52,980 --> 00:07:55,109 manufacturer. You actually have to 228 00:07:55,110 --> 00:07:57,179 have the customer demand to be able 229 00:07:57,180 --> 00:07:59,709 to influence the decision making. 230 00:07:59,710 --> 00:08:01,829 And of course, since it was there and 231 00:08:01,830 --> 00:08:03,539 they was supporting chips that were not 232 00:08:03,540 --> 00:08:05,999 just used in laptops, but also similar 233 00:08:06,000 --> 00:08:08,399 chips that made it into access 234 00:08:08,400 --> 00:08:10,409 points, there was a strong push from the 235 00:08:10,410 --> 00:08:12,509 community to open up even more code and 236 00:08:12,510 --> 00:08:14,639 documentation and kind of push the whole 237 00:08:14,640 --> 00:08:15,749 thing forward. 238 00:08:15,750 --> 00:08:17,909 I myself invested maybe more than 239 00:08:17,910 --> 00:08:19,559 three years of work into making this 240 00:08:19,560 --> 00:08:22,409 driver usable for production environments 241 00:08:22,410 --> 00:08:24,929 and had the nice effect that actually 242 00:08:24,930 --> 00:08:27,029 at some point it was stable enough 243 00:08:27,030 --> 00:08:29,219 that customers of a 244 00:08:29,220 --> 00:08:30,809 that were doing embedded hardware 245 00:08:30,810 --> 00:08:32,849 actually started asking Atheros for 246 00:08:32,850 --> 00:08:34,918 commercial support on the S9 K 247 00:08:34,919 --> 00:08:37,048 driver instead of the reference driver 248 00:08:37,049 --> 00:08:39,359 that they just provided as an SDK. 249 00:08:39,360 --> 00:08:41,009 And of course, at that point in time, 250 00:08:41,010 --> 00:08:43,288 they had never imagined that they 251 00:08:43,289 --> 00:08:44,999 would support ethnic in such a 252 00:08:45,000 --> 00:08:46,079 configuration. 253 00:08:46,080 --> 00:08:47,789 So they looked at who's doing all this 254 00:08:47,790 --> 00:08:49,949 work in the community and which was, 255 00:08:49,950 --> 00:08:51,659 uh, me for a large part. 256 00:08:51,660 --> 00:08:53,399 And so they sent their own customers to 257 00:08:53,400 --> 00:08:54,400 me for support. 258 00:09:02,310 --> 00:09:04,199 But now there were also quite a few 259 00:09:04,200 --> 00:09:06,779 issues with S9, K.. 260 00:09:06,780 --> 00:09:09,269 A lot of work to really make it stable 261 00:09:09,270 --> 00:09:11,369 and usable came from the community 262 00:09:11,370 --> 00:09:13,439 because the vendor was unwilling or 263 00:09:13,440 --> 00:09:15,539 unwilling to invest any sort 264 00:09:15,540 --> 00:09:17,699 of significant resources comparable 265 00:09:17,700 --> 00:09:19,859 to their own internal development in 266 00:09:19,860 --> 00:09:21,509 making this driver better. 267 00:09:21,510 --> 00:09:23,789 Additionally, there was there were many 268 00:09:23,790 --> 00:09:25,769 people involved in the company from the 269 00:09:25,770 --> 00:09:27,359 community that were actually pushing 270 00:09:27,360 --> 00:09:29,669 internally to be able to provide 271 00:09:29,670 --> 00:09:31,409 better open source support and have 272 00:09:31,410 --> 00:09:34,409 developers commit resources to that. 273 00:09:34,410 --> 00:09:36,659 But this progress was often very slow 274 00:09:36,660 --> 00:09:38,019 because of high turnover. 275 00:09:38,020 --> 00:09:40,169 Like at one point you had one 276 00:09:40,170 --> 00:09:42,119 engineering manager or project manager 277 00:09:42,120 --> 00:09:44,129 convinced that this whole open source 278 00:09:44,130 --> 00:09:45,659 thing was not going away and it was 279 00:09:45,660 --> 00:09:47,129 actually a useful thing. 280 00:09:47,130 --> 00:09:49,079 And then he moved to another company and 281 00:09:49,080 --> 00:09:51,329 the next guy, it was just as locked down 282 00:09:51,330 --> 00:09:52,949 as the other one was initially. 283 00:09:52,950 --> 00:09:55,589 So it's a repeated effort and 284 00:09:55,590 --> 00:09:57,839 it's it's really hard 285 00:09:57,840 --> 00:10:00,479 to to kind of make this sustainable, 286 00:10:00,480 --> 00:10:02,729 whereas when customers demand 287 00:10:02,730 --> 00:10:04,829 a feature, they usually jump immediately 288 00:10:04,830 --> 00:10:07,179 because they want to generate sales. 289 00:10:07,180 --> 00:10:09,279 So these open source drivers 290 00:10:09,280 --> 00:10:11,349 really had very limited 291 00:10:11,350 --> 00:10:13,899 resources, like with asthma, I think 292 00:10:13,900 --> 00:10:15,999 at some point it was two people working 293 00:10:16,000 --> 00:10:18,249 on it and then it just became one. 294 00:10:18,250 --> 00:10:20,169 And then the one guy never really had 295 00:10:20,170 --> 00:10:21,099 much time. 296 00:10:21,100 --> 00:10:23,379 So after some point, there 297 00:10:23,380 --> 00:10:25,329 were not really that many contributions 298 00:10:25,330 --> 00:10:28,149 from Atheros or later QCA themselves. 299 00:10:28,150 --> 00:10:30,189 It was basically maintained by the 300 00:10:30,190 --> 00:10:31,729 community. 301 00:10:31,730 --> 00:10:34,069 And during the time where 302 00:10:34,070 --> 00:10:36,139 they actually try to figure out if they 303 00:10:36,140 --> 00:10:38,269 could commit more resources, they also 304 00:10:38,270 --> 00:10:40,189 had some crazy ideas on how they could 305 00:10:40,190 --> 00:10:42,679 unify the ethnic code base 306 00:10:42,680 --> 00:10:44,809 with the code base of their internal, uh, 307 00:10:44,810 --> 00:10:46,879 driver and kind of sync 308 00:10:46,880 --> 00:10:49,279 it up both ways and have some ways of 309 00:10:49,280 --> 00:10:51,229 maintaining control over the development 310 00:10:51,230 --> 00:10:53,599 direction of the open driver, which 311 00:10:53,600 --> 00:10:55,729 in some cases really goes against 312 00:10:55,730 --> 00:10:57,019 the Linux development model. 313 00:10:57,020 --> 00:10:58,909 So kind of also made things harder 314 00:10:58,910 --> 00:11:00,799 because they were not really ready to 315 00:11:00,800 --> 00:11:03,049 commit to that before they 316 00:11:03,050 --> 00:11:04,579 had they would figure out this whole 317 00:11:04,580 --> 00:11:07,189 unification thing, which was impossible 318 00:11:07,190 --> 00:11:09,169 to figure out properly. 319 00:11:09,170 --> 00:11:11,179 And now the biggest issue with us, Kenya, 320 00:11:11,180 --> 00:11:13,549 is, of course, the not 11 321 00:11:13,550 --> 00:11:15,079 ships that it supports, they're going 322 00:11:15,080 --> 00:11:17,329 away and they have this new 323 00:11:17,330 --> 00:11:20,449 driver called as 10K for the 11 324 00:11:20,450 --> 00:11:22,729 ships and is actually named after 325 00:11:22,730 --> 00:11:25,219 S9 with just a number increment 326 00:11:25,220 --> 00:11:27,589 because they wanted to really achieve 327 00:11:27,590 --> 00:11:29,719 the same sort of thing. 328 00:11:29,720 --> 00:11:32,059 Of course, it didn't work out properly 329 00:11:32,060 --> 00:11:33,469 because of poor planning and other 330 00:11:33,470 --> 00:11:35,689 things. Now, I'll get to that later. 331 00:11:35,690 --> 00:11:37,579 But basically was horrible enough that I 332 00:11:37,580 --> 00:11:40,219 decided to stop working with QCA 333 00:11:40,220 --> 00:11:42,469 and figure out some alternatives. 334 00:11:42,470 --> 00:11:44,869 So Mediatheque came along 335 00:11:44,870 --> 00:11:47,239 and they actually 336 00:11:47,240 --> 00:11:48,859 they're much smaller than Qualcomm. 337 00:11:48,860 --> 00:11:51,049 So you have less of the bureaucratic 338 00:11:51,050 --> 00:11:52,429 B.S. going on. 339 00:11:52,430 --> 00:11:53,600 And they actually 340 00:11:54,650 --> 00:11:57,079 found out that this opensource thing is 341 00:11:57,080 --> 00:11:58,849 really nice for various reasons, which 342 00:11:58,850 --> 00:11:59,959 I'll get you later. 343 00:11:59,960 --> 00:12:01,789 And they decided they actually want a 344 00:12:01,790 --> 00:12:03,949 macchiato. Treleaven upstream Wi-Fi 345 00:12:03,950 --> 00:12:06,109 driver, they just didn't know how 346 00:12:06,110 --> 00:12:07,759 to create such a thing. 347 00:12:07,760 --> 00:12:09,949 So I offered them some help 348 00:12:09,950 --> 00:12:11,059 in that regard. 349 00:12:11,060 --> 00:12:13,429 And I started writing a new driver 350 00:12:13,430 --> 00:12:15,439 for the chipsets from scratch, which took 351 00:12:15,440 --> 00:12:17,299 me about a month of work. 352 00:12:17,300 --> 00:12:19,639 But it was contract work paid, paid 353 00:12:19,640 --> 00:12:20,809 for by them. 354 00:12:20,810 --> 00:12:23,059 And in some ways, it's, 355 00:12:23,060 --> 00:12:25,819 uh, it might be a suitable replacement 356 00:12:25,820 --> 00:12:27,679 if we can get enough hardware with this 357 00:12:27,680 --> 00:12:29,929 chipset going on, uh, for 358 00:12:29,930 --> 00:12:33,139 things that were previously done with S9. 359 00:12:33,140 --> 00:12:35,359 So one of the issues with that is 360 00:12:35,360 --> 00:12:38,029 there's, uh, like in our 10K, 361 00:12:38,030 --> 00:12:39,709 there's a proprietary firmware that 362 00:12:39,710 --> 00:12:42,079 controls some things, which is obviously 363 00:12:42,080 --> 00:12:44,479 it goes against the things that we want. 364 00:12:44,480 --> 00:12:45,949 But the good thing about this chip is 365 00:12:45,950 --> 00:12:48,079 Disfarmer is very small and 366 00:12:48,080 --> 00:12:50,329 very simple. So it only sets the channels 367 00:12:50,330 --> 00:12:52,459 and it only does some calibrations, 368 00:12:52,460 --> 00:12:54,139 which are the things that might be 369 00:12:54,140 --> 00:12:56,539 interesting to some research projects. 370 00:12:56,540 --> 00:12:59,059 But in many ways it's not relevant 371 00:12:59,060 --> 00:13:00,919 to the day to day things that we want to 372 00:13:00,920 --> 00:13:02,149 do with this driver. 373 00:13:02,150 --> 00:13:04,189 So the driver actually has the 374 00:13:04,190 --> 00:13:06,469 possibility to control the entire data 375 00:13:06,470 --> 00:13:08,719 path, which is what we need to build mesh 376 00:13:08,720 --> 00:13:10,789 networks to do rate control and software 377 00:13:10,790 --> 00:13:13,049 and all of these useful things. 378 00:13:13,050 --> 00:13:15,439 So it's not as free as Alstyne, but it's 379 00:13:15,440 --> 00:13:17,539 it's usable. And I hope someday 380 00:13:17,540 --> 00:13:19,099 to convince them to open source the 381 00:13:19,100 --> 00:13:21,469 firmware as well, which maybe 382 00:13:21,470 --> 00:13:23,329 will be possible because they've already 383 00:13:23,330 --> 00:13:24,829 figured out that open source is a good 384 00:13:24,830 --> 00:13:25,830 idea. 385 00:13:26,760 --> 00:13:27,760 So. 386 00:13:28,300 --> 00:13:29,979 OK, now to the point. 387 00:13:33,860 --> 00:13:36,109 Now, let's see what's wrong with 388 00:13:36,110 --> 00:13:38,479 our 10K, and I thought a bit about 389 00:13:38,480 --> 00:13:41,029 like how to how to present this 390 00:13:41,030 --> 00:13:43,129 and in the end decided to 391 00:13:43,130 --> 00:13:45,259 show it with some pictures that I 392 00:13:45,260 --> 00:13:47,539 hope will match the intellectual level 393 00:13:47,540 --> 00:13:49,549 at which I assume the decision making was 394 00:13:49,550 --> 00:13:50,550 going on. 395 00:13:51,800 --> 00:13:53,749 So let's start with the first one, which 396 00:13:53,750 --> 00:13:55,609 is kind of a big deal. 397 00:13:55,610 --> 00:13:57,139 We have the stoner guy. 398 00:13:57,140 --> 00:13:59,299 They create a successor to a popular 399 00:13:59,300 --> 00:14:01,489 free software driver, but they put all 400 00:14:01,490 --> 00:14:03,319 the interesting parts and proprietary 401 00:14:03,320 --> 00:14:05,239 firmware. How nice. 402 00:14:05,240 --> 00:14:07,939 So I was kind of deciding 403 00:14:07,940 --> 00:14:09,979 whether to use the stoner guy or the 404 00:14:09,980 --> 00:14:11,359 scumbag Steve here, 405 00:14:12,680 --> 00:14:14,839 but then decided to go with Hanlon's 406 00:14:14,840 --> 00:14:17,149 razor, which says never attribute 407 00:14:17,150 --> 00:14:19,279 to malice that which can adequately be 408 00:14:19,280 --> 00:14:20,630 explained by stupidity. 409 00:14:26,150 --> 00:14:28,339 So to the next point, they wanted 410 00:14:28,340 --> 00:14:30,469 to offload all the things that they 411 00:14:30,470 --> 00:14:32,539 could offload. They finally had a 412 00:14:32,540 --> 00:14:34,099 microcontroller on there which was 413 00:14:34,100 --> 00:14:36,349 reasonably powerful, and 414 00:14:36,350 --> 00:14:38,089 they were building a firmware with lots 415 00:14:38,090 --> 00:14:39,979 of fancy abstraction and they decided, 416 00:14:39,980 --> 00:14:41,749 oh, we're going to do it like with a 417 00:14:41,750 --> 00:14:43,819 mobile chips. We're just going to offload 418 00:14:43,820 --> 00:14:45,889 everything because they basically 419 00:14:45,890 --> 00:14:47,959 combined their mobile development 420 00:14:47,960 --> 00:14:49,769 unit with the network development unit. 421 00:14:49,770 --> 00:14:51,949 So they would use the same approach for 422 00:14:51,950 --> 00:14:54,289 mobile and for the access point 423 00:14:54,290 --> 00:14:56,359 designs, which, yeah, 424 00:14:56,360 --> 00:14:58,699 it might save some resources, but 425 00:14:58,700 --> 00:15:00,859 of course there's lots of 426 00:15:00,860 --> 00:15:02,089 different requirements. 427 00:15:02,090 --> 00:15:03,799 And like putting everything together is a 428 00:15:03,800 --> 00:15:05,959 bit hard and offloading 429 00:15:05,960 --> 00:15:07,759 all the things to proprietary firmware 430 00:15:07,760 --> 00:15:10,069 kind of completely goes against 431 00:15:10,070 --> 00:15:11,869 what we as a community need or what 432 00:15:11,870 --> 00:15:13,789 people need to be able to build flexible 433 00:15:13,790 --> 00:15:14,869 devices. 434 00:15:14,870 --> 00:15:17,359 So they decided they they offload 435 00:15:17,360 --> 00:15:19,189 scanning, they offload lots of power, 436 00:15:19,190 --> 00:15:21,259 safe handling. They offload large parts 437 00:15:21,260 --> 00:15:22,429 of the data path. 438 00:15:22,430 --> 00:15:24,319 They do rate control entirely in 439 00:15:24,320 --> 00:15:26,629 firmware. So if 440 00:15:26,630 --> 00:15:28,969 their control is crappy and it actually 441 00:15:28,970 --> 00:15:31,549 is, we cannot replace it. 442 00:15:31,550 --> 00:15:33,769 So that's kind of in the way 443 00:15:33,770 --> 00:15:34,969 of many useful things. 444 00:15:34,970 --> 00:15:37,129 And that's also a big reason why 445 00:15:37,130 --> 00:15:38,989 I decided that I don't want to be 446 00:15:38,990 --> 00:15:41,089 involved with 10K any more than 447 00:15:41,090 --> 00:15:42,090 I have to. 448 00:15:43,560 --> 00:15:45,629 So on to the next point, which is kind 449 00:15:45,630 --> 00:15:47,819 of a funny one, they actually put a lot 450 00:15:47,820 --> 00:15:49,619 of effort into designing fancy 451 00:15:49,620 --> 00:15:51,299 abstractions to keep the firmware 452 00:15:51,300 --> 00:15:54,149 compatible while their own internal 453 00:15:54,150 --> 00:15:55,829 engineers were basically treating the 454 00:15:55,830 --> 00:15:58,139 firmware as an extension to the driver. 455 00:15:58,140 --> 00:16:00,509 So in the end, they changed the 456 00:16:00,510 --> 00:16:02,879 firmware abi compatible layer pretty 457 00:16:02,880 --> 00:16:05,039 much with any version that they made 458 00:16:05,040 --> 00:16:07,559 on any branch that they made, defeating 459 00:16:07,560 --> 00:16:09,809 the whole purpose of the entire thing. 460 00:16:09,810 --> 00:16:12,059 So if you actually look at the 10K 461 00:16:12,060 --> 00:16:14,219 driver, you have like five different 462 00:16:14,220 --> 00:16:16,499 firmware interfaces and firmware APIs 463 00:16:16,500 --> 00:16:18,029 where depending on the version of the 464 00:16:18,030 --> 00:16:20,399 Fermor and sometimes just on the version, 465 00:16:20,400 --> 00:16:22,469 not on the actual chipset, you 466 00:16:22,470 --> 00:16:24,599 get a completely different API and 467 00:16:24,600 --> 00:16:27,569 it just has to handle all of those 468 00:16:27,570 --> 00:16:29,669 because the Linux kernel is supposed 469 00:16:29,670 --> 00:16:31,499 to be compatible with firmware changes 470 00:16:31,500 --> 00:16:33,749 and everything. So it's a big 471 00:16:33,750 --> 00:16:35,789 mess and I don't see anybody cleaning 472 00:16:35,790 --> 00:16:37,559 that up any time soon. 473 00:16:37,560 --> 00:16:39,749 So actually, 474 00:16:39,750 --> 00:16:41,939 when I started looking into our 10K 475 00:16:41,940 --> 00:16:44,189 before it became public, I decided, 476 00:16:44,190 --> 00:16:46,319 yes, I could get involved in that 477 00:16:46,320 --> 00:16:48,239 mess if I wanted to, but it would have 478 00:16:48,240 --> 00:16:50,339 been a multi month full time 479 00:16:50,340 --> 00:16:52,889 job just to clean up that mess with, 480 00:16:52,890 --> 00:16:55,169 uh, let's say, slim chances 481 00:16:55,170 --> 00:16:57,179 of it actually succeeding in the long run 482 00:16:57,180 --> 00:16:59,009 due to the bureaucratic decisions at that 483 00:16:59,010 --> 00:17:00,099 level. 484 00:17:00,100 --> 00:17:02,189 So I decided against it and decided 485 00:17:02,190 --> 00:17:04,229 while another manufacturer might just be 486 00:17:04,230 --> 00:17:05,909 more understanding when it comes to open 487 00:17:05,910 --> 00:17:06,910 source. 488 00:17:08,089 --> 00:17:10,459 So to the last minor point 489 00:17:10,460 --> 00:17:13,159 with the driver, they decided, 490 00:17:13,160 --> 00:17:15,469 oh, well, we it's it's we 491 00:17:15,470 --> 00:17:17,539 don't just use plane eight or two, 11 492 00:17:17,540 --> 00:17:19,279 frames from the driver and then send 493 00:17:19,280 --> 00:17:21,889 those out. That cannot be that simple. 494 00:17:21,890 --> 00:17:24,289 So they figured out a fancy mode, 495 00:17:24,290 --> 00:17:26,479 which they called native Wi-Fi. 496 00:17:26,480 --> 00:17:28,009 And I think this is actually a Microsoft 497 00:17:28,010 --> 00:17:30,289 term. So they use the property of 498 00:17:30,290 --> 00:17:32,749 like the the Windows networking 499 00:17:32,750 --> 00:17:34,819 stack where it has some fake eight 500 00:17:34,820 --> 00:17:36,949 or two, 11 headers that the driver is 501 00:17:36,950 --> 00:17:38,509 expected to put in there. 502 00:17:38,510 --> 00:17:40,999 And they put that in silicon 503 00:17:41,000 --> 00:17:43,219 and they expect the Linux driver to 504 00:17:43,220 --> 00:17:45,649 like take the full to the 11 505 00:17:45,650 --> 00:17:47,839 headers, replace them with fake ones 506 00:17:47,840 --> 00:17:49,759 so the hardware can then replace those 507 00:17:49,760 --> 00:17:51,259 with the real ones while transmitting the 508 00:17:51,260 --> 00:17:52,260 packets. 509 00:17:57,970 --> 00:17:59,739 So I spend a lot of time here talking 510 00:17:59,740 --> 00:18:01,899 about Qualcomm, Atheros, so 511 00:18:01,900 --> 00:18:04,089 let's take a short look at what's 512 00:18:04,090 --> 00:18:05,859 up with the other vendors. 513 00:18:05,860 --> 00:18:08,649 So you have Broadcom there. 514 00:18:08,650 --> 00:18:10,929 They made actually made a softmax 515 00:18:10,930 --> 00:18:12,910 driver for some of the recent chipsets, 516 00:18:14,140 --> 00:18:16,209 but they only made it for like 517 00:18:16,210 --> 00:18:18,399 one or two generations of 518 00:18:18,400 --> 00:18:20,529 chipsets and not really for the 519 00:18:20,530 --> 00:18:22,209 11 AC ones. 520 00:18:22,210 --> 00:18:23,979 And they decided for the new stuff, 521 00:18:23,980 --> 00:18:25,989 they're only going to support Fulbeck, 522 00:18:25,990 --> 00:18:28,189 which means that you don't even have the 523 00:18:28,190 --> 00:18:30,279 2011 data path in software. 524 00:18:30,280 --> 00:18:32,709 You basically send in Ethernet frames 525 00:18:32,710 --> 00:18:34,509 and you can configure some things, but 526 00:18:34,510 --> 00:18:36,699 you have no freedom to actually 527 00:18:36,700 --> 00:18:38,949 have any sort of flexibility there. 528 00:18:38,950 --> 00:18:40,659 And this is a trend that we're seeing 529 00:18:40,660 --> 00:18:43,659 with with other kinds of devices as well. 530 00:18:43,660 --> 00:18:45,279 Like with with Marvell. 531 00:18:45,280 --> 00:18:47,319 They also have some Fulbeck devices, 532 00:18:47,320 --> 00:18:49,179 though thankfully mostly limited to the 533 00:18:49,180 --> 00:18:50,409 mobile ones. 534 00:18:50,410 --> 00:18:52,719 But they kind of follow the same 535 00:18:52,720 --> 00:18:55,029 trend as I think with 536 00:18:55,030 --> 00:18:57,709 the development of the the app chipsets. 537 00:18:57,710 --> 00:18:59,829 They also offload more 538 00:18:59,830 --> 00:19:01,749 and more things to proprietary firmware, 539 00:19:01,750 --> 00:19:03,849 which they also frequently 540 00:19:03,850 --> 00:19:04,359 change. 541 00:19:04,360 --> 00:19:06,369 They also have no real stability in the 542 00:19:06,370 --> 00:19:08,499 interface and they kind of take 543 00:19:08,500 --> 00:19:10,659 away all the control but still have 544 00:19:10,660 --> 00:19:12,729 enough boilerplate 545 00:19:12,730 --> 00:19:14,829 code in the kernel to say to to be 546 00:19:14,830 --> 00:19:17,379 saying we have a Linux upstream driver, 547 00:19:17,380 --> 00:19:19,539 but it's just unusable for for 548 00:19:19,540 --> 00:19:21,669 any purposes that go beyond the simple 549 00:19:21,670 --> 00:19:23,440 access point or simple client basis. 550 00:19:24,810 --> 00:19:26,699 And you have really the same with Intel, 551 00:19:26,700 --> 00:19:28,589 except that they're much more limited. 552 00:19:28,590 --> 00:19:30,779 They have some HP support 553 00:19:30,780 --> 00:19:31,859 for a few chips, 554 00:19:32,880 --> 00:19:34,259 but nobody uses it. 555 00:19:34,260 --> 00:19:36,479 So typically, if you try it, as 556 00:19:36,480 --> 00:19:38,609 a few people have done, it 557 00:19:38,610 --> 00:19:40,859 doesn't work because 558 00:19:40,860 --> 00:19:42,419 nobody ever uses that stuff. 559 00:19:42,420 --> 00:19:44,789 Or maybe some people use it in limited 560 00:19:44,790 --> 00:19:46,889 configuration to do Wi-Fi direct. 561 00:19:46,890 --> 00:19:48,299 But for any real use. 562 00:19:48,300 --> 00:19:50,519 Uh, no, not usable. 563 00:19:50,520 --> 00:19:52,199 And with real tech, you have something 564 00:19:52,200 --> 00:19:54,509 similar going on, they keep cranking 565 00:19:54,510 --> 00:19:56,399 out new chipsets every now and then where 566 00:19:56,400 --> 00:19:58,899 they have different drivers all the time, 567 00:19:58,900 --> 00:20:00,989 and they also put more and more stuff in 568 00:20:00,990 --> 00:20:03,329 firmware. So it's it's all pretty 569 00:20:03,330 --> 00:20:05,069 much headed in the wrong direction. 570 00:20:05,070 --> 00:20:06,929 And we have to focus on the few choices 571 00:20:06,930 --> 00:20:09,029 that we have where we were kind 572 00:20:09,030 --> 00:20:11,399 of closest to where we need to be. 573 00:20:11,400 --> 00:20:13,319 And I hope to be able to to build 574 00:20:13,320 --> 00:20:16,199 something like that based on mediatheque 575 00:20:16,200 --> 00:20:18,299 if they can manage to to properly 576 00:20:18,300 --> 00:20:19,300 stay on the market. 577 00:20:21,380 --> 00:20:23,569 So in all of this 578 00:20:23,570 --> 00:20:25,399 discussion and dealing with chipset 579 00:20:25,400 --> 00:20:27,769 manufacturers, there's lots of 580 00:20:27,770 --> 00:20:30,199 challenges which present a very small 581 00:20:30,200 --> 00:20:31,699 set of opportunities. 582 00:20:31,700 --> 00:20:33,319 And I'd like to talk about what the 583 00:20:33,320 --> 00:20:34,909 issues in working with the chipset 584 00:20:34,910 --> 00:20:36,959 manufacturers are. 585 00:20:36,960 --> 00:20:39,209 So educating them is 586 00:20:39,210 --> 00:20:41,729 kind of hard, as I as I 587 00:20:41,730 --> 00:20:43,529 pointed out earlier, with Qualcomm 588 00:20:43,530 --> 00:20:45,329 Atheros, they have lots of bureaucracy 589 00:20:45,330 --> 00:20:47,549 there and sometimes you have enough 590 00:20:47,550 --> 00:20:49,709 people to push internally for 591 00:20:49,710 --> 00:20:52,349 for putting opensource on the agenda. 592 00:20:52,350 --> 00:20:54,539 But in the end, most of the people there 593 00:20:54,540 --> 00:20:56,009 will will not care. 594 00:20:56,010 --> 00:20:57,989 And most of the people there will just go 595 00:20:57,990 --> 00:21:00,439 with the cheapest option where 596 00:21:00,440 --> 00:21:02,609 where they don't have any any sort 597 00:21:02,610 --> 00:21:04,829 of cost that they 598 00:21:04,830 --> 00:21:06,959 cannot attribute to a particular 599 00:21:06,960 --> 00:21:09,359 business case or a particular 600 00:21:09,360 --> 00:21:11,399 set of specific clients. 601 00:21:11,400 --> 00:21:13,559 And they also expect their clients not 602 00:21:13,560 --> 00:21:15,779 to care about open source, which 603 00:21:15,780 --> 00:21:18,059 has the result of their clients 604 00:21:18,060 --> 00:21:20,399 actually not seeing anything usable 605 00:21:20,400 --> 00:21:22,409 based on proper open source. 606 00:21:22,410 --> 00:21:24,869 So they don't know how to ask for it. 607 00:21:24,870 --> 00:21:27,059 But if some customer has 608 00:21:27,060 --> 00:21:28,709 some people inside that are actually very 609 00:21:28,710 --> 00:21:30,030 smart about open source, 610 00:21:31,140 --> 00:21:33,179 they can easily push for the chipset 611 00:21:33,180 --> 00:21:35,339 vendor to to make some changes to their 612 00:21:35,340 --> 00:21:37,289 roadmap, but only if they're big enough 613 00:21:37,290 --> 00:21:38,249 in volume. 614 00:21:38,250 --> 00:21:40,229 One of the really good examples here is, 615 00:21:40,230 --> 00:21:42,659 is Google Chrome OS, because 616 00:21:42,660 --> 00:21:45,119 they actually had people in there 617 00:21:45,120 --> 00:21:47,249 in the teams that dealt with 618 00:21:47,250 --> 00:21:49,019 the chipset, manufacturers that cared a 619 00:21:49,020 --> 00:21:50,939 lot about doing the right thing. 620 00:21:50,940 --> 00:21:53,219 And initially, I think they only demanded 621 00:21:53,220 --> 00:21:55,319 that all of the drivers that they 622 00:21:55,320 --> 00:21:58,229 get from chipset vendors are open source. 623 00:21:58,230 --> 00:22:00,329 And then they found out that this is not 624 00:22:00,330 --> 00:22:02,069 enough because then they get tarballs of 625 00:22:02,070 --> 00:22:03,989 crappy vendor drivers that are still hard 626 00:22:03,990 --> 00:22:04,889 to integrate. 627 00:22:04,890 --> 00:22:07,139 So they changed that over time to demand 628 00:22:07,140 --> 00:22:09,359 that the drivers need to be upstream. 629 00:22:09,360 --> 00:22:11,369 So suddenly the chip vendor is forced to 630 00:22:11,370 --> 00:22:13,799 adhere to a quality standard controlled 631 00:22:13,800 --> 00:22:16,049 by the kernel community, which works 632 00:22:16,050 --> 00:22:17,050 much better. 633 00:22:23,980 --> 00:22:26,289 So the big question here is, can 634 00:22:26,290 --> 00:22:28,419 we engineer customer demand for 635 00:22:28,420 --> 00:22:30,399 free drivers and I'd like to leave that 636 00:22:30,400 --> 00:22:32,589 for the discussion later, because I think 637 00:22:32,590 --> 00:22:34,779 that that's really the easy, easiest 638 00:22:34,780 --> 00:22:36,939 possible way to make some changes to that 639 00:22:36,940 --> 00:22:37,940 ecosystem. 640 00:22:40,660 --> 00:22:42,819 And some of the ways that we 641 00:22:42,820 --> 00:22:45,009 can do this, that I found all that kind 642 00:22:45,010 --> 00:22:47,739 of work is educating 643 00:22:47,740 --> 00:22:49,869 big customers with enough volume. 644 00:22:49,870 --> 00:22:52,329 That open source is a nice way 645 00:22:52,330 --> 00:22:55,389 to kind of save on development costs, 646 00:22:55,390 --> 00:22:57,699 because as as many, many 647 00:22:57,700 --> 00:23:00,189 vendors that combine 648 00:23:00,190 --> 00:23:02,049 silicon from different vendors, they 649 00:23:02,050 --> 00:23:04,449 typically find out pretty quickly that 650 00:23:04,450 --> 00:23:05,979 all of the reference software for the 651 00:23:05,980 --> 00:23:08,169 hardware is only tested in very, 652 00:23:08,170 --> 00:23:10,269 very limited Constellation's and 653 00:23:10,270 --> 00:23:12,579 typically only with the default modes 654 00:23:12,580 --> 00:23:14,439 that the reference SDK is designed to 655 00:23:14,440 --> 00:23:16,779 use. So if you if you deviate from 656 00:23:16,780 --> 00:23:18,849 that and if you kind of put it 657 00:23:18,850 --> 00:23:21,419 put a driver from a different vendor 658 00:23:21,420 --> 00:23:23,499 in a different system or with 659 00:23:23,500 --> 00:23:26,139 a system on chip from a different vendor, 660 00:23:26,140 --> 00:23:27,309 then you have all these kinds of 661 00:23:27,310 --> 00:23:29,679 mismatches to the hacks in 662 00:23:29,680 --> 00:23:31,929 the various trees because vendors always 663 00:23:31,930 --> 00:23:33,159 assume that you're going to source 664 00:23:33,160 --> 00:23:34,160 everything from them. 665 00:23:35,540 --> 00:23:37,729 And if you educate them that with 666 00:23:37,730 --> 00:23:40,009 with free drivers and 667 00:23:40,010 --> 00:23:42,079 free Koln code and if it's 668 00:23:42,080 --> 00:23:44,269 all upstream, then they don't actually 669 00:23:44,270 --> 00:23:46,279 have to worry about mixing those 670 00:23:46,280 --> 00:23:49,039 combinations anymore, because typically 671 00:23:49,040 --> 00:23:51,289 kernel drivers are tested in lots 672 00:23:51,290 --> 00:23:53,899 of very diverse and very 673 00:23:53,900 --> 00:23:56,239 varying conditions with different 674 00:23:56,240 --> 00:23:56,959 platforms. 675 00:23:56,960 --> 00:23:59,209 And typically, a driver 676 00:23:59,210 --> 00:24:01,579 for a system on CHIP is written 677 00:24:01,580 --> 00:24:03,679 in a way that it often does not depend on 678 00:24:03,680 --> 00:24:05,179 hardware support for that particular 679 00:24:05,180 --> 00:24:07,249 system on Chip, but that it allows 680 00:24:07,250 --> 00:24:09,289 to be compiled with lots of different 681 00:24:09,290 --> 00:24:11,479 architectures for which it 682 00:24:11,480 --> 00:24:13,549 never will be useful, just 683 00:24:13,550 --> 00:24:15,619 to make sure that the code is written 684 00:24:15,620 --> 00:24:17,899 that is written as clean and portable 685 00:24:17,900 --> 00:24:19,639 and is supported in many different 686 00:24:19,640 --> 00:24:20,839 configurations. 687 00:24:20,840 --> 00:24:22,219 And with those kinds of quality 688 00:24:22,220 --> 00:24:24,469 standards, you have a lot easier 689 00:24:24,470 --> 00:24:26,509 job of integrating all that in your own 690 00:24:26,510 --> 00:24:28,429 board if you're building a new system 691 00:24:28,430 --> 00:24:30,499 than if you just get some 692 00:24:30,500 --> 00:24:32,629 random driver blood that was tested 693 00:24:32,630 --> 00:24:34,519 in one configuration but can be expected 694 00:24:34,520 --> 00:24:36,769 to to fail epically 695 00:24:36,770 --> 00:24:38,720 in various other configurations. 696 00:24:40,220 --> 00:24:42,649 And I think a big deal in educating 697 00:24:42,650 --> 00:24:45,529 those customers is also to to provide 698 00:24:45,530 --> 00:24:47,999 good reference code and examples 699 00:24:48,000 --> 00:24:50,299 I actually had 700 00:24:50,300 --> 00:24:52,579 many years ago, I had a meeting 701 00:24:52,580 --> 00:24:55,129 at Broadcom and 702 00:24:55,130 --> 00:24:57,259 when I was still working for QCA, 703 00:24:57,260 --> 00:24:59,149 and I sat down with some of the managers 704 00:24:59,150 --> 00:25:01,819 there, and there was one guy responsible 705 00:25:01,820 --> 00:25:04,189 for the for the embedded SDK part. 706 00:25:04,190 --> 00:25:06,019 And he actually told me, oh, yeah, we are 707 00:25:06,020 --> 00:25:08,359 fully aware of Open because 708 00:25:08,360 --> 00:25:10,459 customers frequently ask us for 709 00:25:10,460 --> 00:25:12,499 features that they see there and then we 710 00:25:12,500 --> 00:25:14,089 have to go and build them ourselves. 711 00:25:21,330 --> 00:25:23,459 And so this is something that that, 712 00:25:23,460 --> 00:25:25,799 uh, works, you show 713 00:25:25,800 --> 00:25:27,839 you show people what they can actually 714 00:25:27,840 --> 00:25:29,819 get with a decent platform, with decent 715 00:25:29,820 --> 00:25:31,829 source code, and then you tell them now 716 00:25:31,830 --> 00:25:33,869 go and demand this from the from your 717 00:25:33,870 --> 00:25:34,799 chipset vendor. 718 00:25:34,800 --> 00:25:36,959 And depending on the size, this can have 719 00:25:36,960 --> 00:25:38,589 a real impact. 720 00:25:38,590 --> 00:25:40,809 And there's actually a third way that 721 00:25:40,810 --> 00:25:43,269 has also turned out to to be very useful 722 00:25:43,270 --> 00:25:45,479 in some cases supporting 723 00:25:45,480 --> 00:25:48,069 GPL enforcement action, because 724 00:25:48,070 --> 00:25:50,589 if you have a group of of people 725 00:25:50,590 --> 00:25:53,109 enforcing the GPL against a particular 726 00:25:53,110 --> 00:25:55,389 router vendor or ODM, and 727 00:25:55,390 --> 00:25:58,039 they've been caught repeatedly and 728 00:25:58,040 --> 00:26:00,309 they there's a lawsuit going on 729 00:26:00,310 --> 00:26:01,809 and they kind of see that they're on the 730 00:26:01,810 --> 00:26:03,759 losing end of this lawsuit. 731 00:26:03,760 --> 00:26:05,979 It's nice to be able to tell them. 732 00:26:05,980 --> 00:26:08,229 Now, if you were to use open 733 00:26:08,230 --> 00:26:10,149 source software, you would have a lot 734 00:26:10,150 --> 00:26:11,739 less issue with the licenses. 735 00:26:11,740 --> 00:26:13,239 It would just publish that and you would 736 00:26:13,240 --> 00:26:15,339 just have clean separation between the 737 00:26:15,340 --> 00:26:17,439 the open source code and the proprietary 738 00:26:17,440 --> 00:26:20,019 code. And it would all be much easier 739 00:26:20,020 --> 00:26:22,209 because in many cases it's actually not 740 00:26:22,210 --> 00:26:24,249 the GM or the router manufacturer that's 741 00:26:24,250 --> 00:26:26,619 directly violating the GPL, 742 00:26:26,620 --> 00:26:28,749 but they get reference code 743 00:26:28,750 --> 00:26:30,999 from the chip vendor, which is really 744 00:26:31,000 --> 00:26:32,739 fishy with licensing. 745 00:26:32,740 --> 00:26:34,479 And you have that very frequently because 746 00:26:34,480 --> 00:26:35,919 the chip vendors are worried about the 747 00:26:35,920 --> 00:26:37,479 unique selling points. 748 00:26:37,480 --> 00:26:39,669 And they so they then 749 00:26:39,670 --> 00:26:41,379 worry about marketing market 750 00:26:41,380 --> 00:26:42,609 differentiation. 751 00:26:42,610 --> 00:26:44,019 And at some point they decide, oh, 752 00:26:44,020 --> 00:26:46,089 building better hardware is hard, let's 753 00:26:46,090 --> 00:26:48,309 just differentiate by doing 754 00:26:48,310 --> 00:26:50,109 different quirky software. 755 00:26:50,110 --> 00:26:52,659 And I always see the analogy 756 00:26:52,660 --> 00:26:54,339 there that they're constantly fighting 757 00:26:54,340 --> 00:26:56,379 whether the wheel should have five or six 758 00:26:56,380 --> 00:26:57,789 corners. 759 00:26:57,790 --> 00:26:59,619 And they still haven't figured that one 760 00:26:59,620 --> 00:27:01,479 out. In the meanwhile, we're building 761 00:27:01,480 --> 00:27:03,099 something that's supposed to have round 762 00:27:03,100 --> 00:27:04,659 corners, even though they aren't fully 763 00:27:04,660 --> 00:27:06,789 round yet, but they 764 00:27:06,790 --> 00:27:08,049 haven't figured out that this would be a 765 00:27:08,050 --> 00:27:09,609 nice idea yet. 766 00:27:09,610 --> 00:27:10,630 Maybe we should tell them. 767 00:27:13,730 --> 00:27:16,369 So then there's another key player 768 00:27:16,370 --> 00:27:18,439 that, uh, kind of spits in 769 00:27:18,440 --> 00:27:20,999 our soup here, which is the FCC, 770 00:27:21,000 --> 00:27:23,089 um, it's it's always 771 00:27:23,090 --> 00:27:24,919 a bit of a love hate relationship with 772 00:27:24,920 --> 00:27:27,049 the FCC, because I think in 773 00:27:27,050 --> 00:27:29,239 some ways, sometimes they have demanded 774 00:27:29,240 --> 00:27:31,969 some good things like, uh, in 775 00:27:31,970 --> 00:27:33,739 the whole net neutrality debate, they 776 00:27:33,740 --> 00:27:35,389 might actually be on the good side. 777 00:27:35,390 --> 00:27:37,009 I don't know. I've never really followed 778 00:27:37,010 --> 00:27:39,379 much of that. But here in the Wi-Fi 779 00:27:39,380 --> 00:27:42,079 space, the really problematic, because 780 00:27:42,080 --> 00:27:44,239 they noticed that some people 781 00:27:44,240 --> 00:27:46,399 put up some access points where, 782 00:27:46,400 --> 00:27:48,519 uh, that were interfering with vital 783 00:27:48,520 --> 00:27:50,719 trade weather radars and they looked 784 00:27:50,720 --> 00:27:52,279 at, OK, where does this come from? 785 00:27:52,280 --> 00:27:54,289 And then they see, oh, there's people 786 00:27:54,290 --> 00:27:55,639 there that are tinkering with their 787 00:27:55,640 --> 00:27:57,779 radios and, uh, 788 00:27:57,780 --> 00:27:59,209 maybe they shouldn't do that. 789 00:27:59,210 --> 00:28:00,799 Maybe the tinkering is what's causing 790 00:28:00,800 --> 00:28:01,819 these issues. 791 00:28:01,820 --> 00:28:04,069 So they basically treat user access 792 00:28:04,070 --> 00:28:06,259 to flexible radio devices as a bug 793 00:28:06,260 --> 00:28:08,989 that they can fix by policy. 794 00:28:08,990 --> 00:28:11,329 And so they decided, oh, just going 795 00:28:11,330 --> 00:28:13,219 against the users is hard because there's 796 00:28:13,220 --> 00:28:14,269 so many of them. 797 00:28:14,270 --> 00:28:15,589 We'll just make the hardware 798 00:28:15,590 --> 00:28:17,359 manufacturers are lackeys and we just 799 00:28:17,360 --> 00:28:19,579 make them responsible for ensuring 800 00:28:19,580 --> 00:28:21,739 that the user has no control over his own 801 00:28:21,740 --> 00:28:22,759 device. 802 00:28:22,760 --> 00:28:24,949 And this, of course, generated 803 00:28:24,950 --> 00:28:27,289 a strong backlash in the tech community 804 00:28:27,290 --> 00:28:28,849 from some key people that were 805 00:28:28,850 --> 00:28:30,979 responsible for a large part of the 806 00:28:30,980 --> 00:28:33,209 development of the Internet, actually. 807 00:28:33,210 --> 00:28:35,509 And I guess they didn't quite 808 00:28:35,510 --> 00:28:37,819 expect that. I think I think they thought 809 00:28:37,820 --> 00:28:40,039 that this was just B would just be 810 00:28:40,040 --> 00:28:42,109 really uncontroversial because they 811 00:28:42,110 --> 00:28:43,489 only want to make sure that the weather 812 00:28:43,490 --> 00:28:45,349 radars aren't messed with. 813 00:28:45,350 --> 00:28:47,929 Um, and they actually 814 00:28:47,930 --> 00:28:49,879 made some revised rules based on the 815 00:28:49,880 --> 00:28:50,899 backlash. 816 00:28:50,900 --> 00:28:53,059 But in some cases, they're really 817 00:28:53,060 --> 00:28:54,709 just as bad as the original ones. 818 00:28:54,710 --> 00:28:56,419 Like there was just this thing where they 819 00:28:56,420 --> 00:28:58,669 actually, uh, in the earlier 820 00:28:58,670 --> 00:29:00,929 version, as droughty manufacturers 821 00:29:00,930 --> 00:29:03,139 to to describe how they will 822 00:29:03,140 --> 00:29:05,239 prevent something like the 823 00:29:05,240 --> 00:29:07,579 free foam party from being flashed 824 00:29:07,580 --> 00:29:08,839 onto the device. 825 00:29:08,840 --> 00:29:10,639 And they had to show how they will 826 00:29:10,640 --> 00:29:12,239 prevent that. 827 00:29:12,240 --> 00:29:14,489 And in the new rules, they 828 00:29:14,490 --> 00:29:16,649 came along and said, oh, well, this was 829 00:29:16,650 --> 00:29:18,599 really not our intention to lock down the 830 00:29:18,600 --> 00:29:21,569 full devices and 831 00:29:21,570 --> 00:29:23,729 our intention was only to make sure 832 00:29:23,730 --> 00:29:26,099 that they cannot touch the radio part. 833 00:29:26,100 --> 00:29:28,139 But the kind of the concept that was 834 00:29:28,140 --> 00:29:29,849 pointed out to them repeatedly that they 835 00:29:29,850 --> 00:29:31,919 simply refuse to understand 836 00:29:31,920 --> 00:29:34,109 is that there's a big difference between 837 00:29:34,110 --> 00:29:36,689 the intention and the likely outcome. 838 00:29:36,690 --> 00:29:38,159 And this is this is the part where 839 00:29:38,160 --> 00:29:39,659 they're still struggling to understand 840 00:29:39,660 --> 00:29:41,789 that concept because they still 841 00:29:41,790 --> 00:29:43,949 maintain that, oh, well, they're only 842 00:29:43,950 --> 00:29:46,049 going to lock down radio parameters 843 00:29:46,050 --> 00:29:47,789 and they are not going to touch anything 844 00:29:47,790 --> 00:29:48,689 else. 845 00:29:48,690 --> 00:29:51,059 But I've already heard from some silicon 846 00:29:51,060 --> 00:29:53,459 vendors that they already figured 847 00:29:53,460 --> 00:29:55,769 out that locking down only the radio 848 00:29:55,770 --> 00:29:58,169 is hard. Locking down the entire platform 849 00:29:58,170 --> 00:30:00,449 is so much easier so and so much cheaper. 850 00:30:00,450 --> 00:30:02,459 So let's just do that because nobody 851 00:30:02,460 --> 00:30:04,349 cares about that. Right. 852 00:30:04,350 --> 00:30:05,350 And. 853 00:30:05,960 --> 00:30:08,299 Something that was pointed out to me 854 00:30:08,300 --> 00:30:10,519 in an earlier talk at this Congress, 855 00:30:10,520 --> 00:30:12,439 which I found really interesting, was 856 00:30:12,440 --> 00:30:15,109 there's an interesting coincidence 857 00:30:15,110 --> 00:30:17,269 in timing between those rules 858 00:30:17,270 --> 00:30:19,429 and the appearance of a secondary 859 00:30:19,430 --> 00:30:21,709 user of the spectrum called 860 00:30:21,710 --> 00:30:24,109 LTE you, which are 861 00:30:24,110 --> 00:30:26,119 it seems that they're attempting to do a 862 00:30:26,120 --> 00:30:28,319 land grab of like the, uh, 863 00:30:28,320 --> 00:30:30,499 the the unlicensed spectrum 864 00:30:30,500 --> 00:30:32,689 because they're licensed spectrum 865 00:30:32,690 --> 00:30:34,849 that they fully control is apparently not 866 00:30:34,850 --> 00:30:36,379 enough for them to guarantee the 867 00:30:36,380 --> 00:30:38,179 bandwidth that they want to have. 868 00:30:38,180 --> 00:30:40,069 So they decided, oh, that's just, uh, 869 00:30:40,070 --> 00:30:41,449 grab some of that Wi-Fi. 870 00:30:41,450 --> 00:30:42,589 Uh, nobody's using it. 871 00:30:42,590 --> 00:30:43,590 Right. 872 00:30:44,670 --> 00:30:46,859 And so we really have to figure out 873 00:30:46,860 --> 00:30:48,269 how to deal with that. 874 00:30:48,270 --> 00:30:49,799 There's a lot of people that are doing 875 00:30:49,800 --> 00:30:51,029 active campaigns. 876 00:30:51,030 --> 00:30:53,579 You can find on the news sites 877 00:30:53,580 --> 00:30:56,039 that where people are complaining 878 00:30:56,040 --> 00:30:57,239 about the FCC. 879 00:30:57,240 --> 00:30:59,489 But one of the the main issue 880 00:30:59,490 --> 00:31:01,979 is there's many people 881 00:31:01,980 --> 00:31:03,329 don't seem to get that. 882 00:31:03,330 --> 00:31:05,499 It's just as important to fight against 883 00:31:05,500 --> 00:31:07,229 the part of locking down the radio 884 00:31:07,230 --> 00:31:09,669 parameters than it is to fight against 885 00:31:09,670 --> 00:31:11,699 the lockdown of the full platform. 886 00:31:11,700 --> 00:31:13,889 Because there's so much research 887 00:31:13,890 --> 00:31:16,109 going on, so many interesting things like 888 00:31:16,110 --> 00:31:18,869 friends of mine are developing 889 00:31:18,870 --> 00:31:21,269 a way to dynamically adapt 890 00:31:21,270 --> 00:31:23,399 the power of of the 891 00:31:23,400 --> 00:31:24,699 radio station. 892 00:31:24,700 --> 00:31:26,819 So if it figures out how well this note 893 00:31:26,820 --> 00:31:29,069 is closer, then it can lower 894 00:31:29,070 --> 00:31:30,689 the tax power while getting the same 895 00:31:30,690 --> 00:31:32,669 throughput, which I think I think will do 896 00:31:32,670 --> 00:31:35,319 a lot of good things in for 897 00:31:35,320 --> 00:31:38,039 large high density networks and 898 00:31:38,040 --> 00:31:40,049 when having lots of access points in 899 00:31:40,050 --> 00:31:41,479 crowded spaces. 900 00:31:41,480 --> 00:31:43,589 But the problem is the changes to the new 901 00:31:43,590 --> 00:31:45,389 chipsets are making it increasingly 902 00:31:45,390 --> 00:31:47,909 impossible to deploy something like this, 903 00:31:47,910 --> 00:31:50,219 because all the access to 904 00:31:50,220 --> 00:31:51,869 the hardware level that we need to be 905 00:31:51,870 --> 00:31:53,819 able to build something like that is 906 00:31:53,820 --> 00:31:55,949 going away based on some lame 907 00:31:55,950 --> 00:31:57,419 excuses. 908 00:31:57,420 --> 00:31:59,669 And we have to figure out how to 909 00:31:59,670 --> 00:32:01,709 push this debate in the right direction, 910 00:32:01,710 --> 00:32:04,289 make it clear to people that just 911 00:32:04,290 --> 00:32:06,569 going for the convenient option is really 912 00:32:06,570 --> 00:32:07,890 not enough in this case. 913 00:32:10,310 --> 00:32:12,589 And we also have similar problems 914 00:32:12,590 --> 00:32:14,959 in the EU, actually, the ETSI 915 00:32:14,960 --> 00:32:17,029 has decided to do something 916 00:32:17,030 --> 00:32:18,859 similar like that, which in some cases 917 00:32:18,860 --> 00:32:21,470 even goes beyond the scope of the FCC, 918 00:32:22,610 --> 00:32:24,679 which I think we still have 919 00:32:24,680 --> 00:32:26,749 a bit more time to influence 920 00:32:26,750 --> 00:32:28,909 that one, because it's, uh, 921 00:32:28,910 --> 00:32:31,339 it shows up as the EU directive 922 00:32:31,340 --> 00:32:33,409 and it still has to be implemented by 923 00:32:33,410 --> 00:32:35,989 the various countries international law. 924 00:32:35,990 --> 00:32:38,209 And that gives us some leeway to 925 00:32:38,210 --> 00:32:40,579 to like in the individual countries, 926 00:32:40,580 --> 00:32:42,649 uh, motivate some politicians 927 00:32:42,650 --> 00:32:45,109 to fight against those parts as well. 928 00:32:45,110 --> 00:32:47,359 But I I can give you many details 929 00:32:47,360 --> 00:32:48,949 about the inner workings of that one, 930 00:32:48,950 --> 00:32:51,679 because I try to stay out of politics. 931 00:32:51,680 --> 00:32:53,749 I just figured it was important to at 932 00:32:53,750 --> 00:32:55,909 least mention this because it's kind of 933 00:32:55,910 --> 00:32:56,910 becoming a big deal. 934 00:32:59,640 --> 00:33:01,769 So what happens with all this hardware 935 00:33:01,770 --> 00:33:04,079 lockdown, as I mentioned 936 00:33:04,080 --> 00:33:06,239 before, the chipset manufacturers are 937 00:33:06,240 --> 00:33:08,399 already considering hardware lockdown 938 00:33:08,400 --> 00:33:10,079 to have an easier way to deal with the 939 00:33:10,080 --> 00:33:11,369 FCC rules. 940 00:33:11,370 --> 00:33:13,859 And then there's the router manufacturers 941 00:33:13,860 --> 00:33:16,709 that are already partially doing it, 942 00:33:16,710 --> 00:33:18,989 in some cases maybe as an excuse 943 00:33:18,990 --> 00:33:21,089 to cut down on support costs by 944 00:33:21,090 --> 00:33:23,189 people that are flashing the 945 00:33:23,190 --> 00:33:25,499 devices to custom operating systems. 946 00:33:25,500 --> 00:33:28,019 In some cases, it's actually 947 00:33:28,020 --> 00:33:30,179 the excuse was we want to prevent 948 00:33:30,180 --> 00:33:31,379 Chinese clones. 949 00:33:31,380 --> 00:33:33,629 I think this was the excuse that ubiquity 950 00:33:33,630 --> 00:33:35,729 networks users, whether they have 951 00:33:35,730 --> 00:33:37,559 some really popular outdoor equipment 952 00:33:37,560 --> 00:33:39,569 which gets deployed and triphone 953 00:33:39,570 --> 00:33:40,499 frequently. 954 00:33:40,500 --> 00:33:42,389 And now with the new devices, they 955 00:33:42,390 --> 00:33:44,129 actually lock down the bootloader and 956 00:33:44,130 --> 00:33:46,829 prevent flashing of of custom firmware. 957 00:33:46,830 --> 00:33:48,809 And they said, oh, yeah, this is about 958 00:33:48,810 --> 00:33:50,249 the Chinese phones and everything. 959 00:33:51,810 --> 00:33:53,969 And it's in some cases, 960 00:33:53,970 --> 00:33:56,249 I've seen the lockdown also be used 961 00:33:56,250 --> 00:33:58,469 as a very cheap excuse for 962 00:33:58,470 --> 00:34:00,719 market segmentation, because if you can 963 00:34:00,720 --> 00:34:03,059 in one market, cripple 964 00:34:03,060 --> 00:34:05,279 a few features and sell 965 00:34:05,280 --> 00:34:07,349 it as the basic version and then you have 966 00:34:07,350 --> 00:34:09,029 the same piece of hardware and you just 967 00:34:09,030 --> 00:34:10,658 put a different piece of software on it, 968 00:34:10,659 --> 00:34:12,658 the different key, and it unlocks the 969 00:34:12,659 --> 00:34:13,979 full features. 970 00:34:13,980 --> 00:34:15,539 And you can have like different target 971 00:34:15,540 --> 00:34:17,609 groups and you can just enforce by 972 00:34:17,610 --> 00:34:19,829 some DRM schemes 973 00:34:19,830 --> 00:34:21,869 that people don't just change one for the 974 00:34:21,870 --> 00:34:22,870 other. 975 00:34:24,650 --> 00:34:26,539 And what I'd really like to discuss with 976 00:34:26,540 --> 00:34:28,759 you guys is what can we do about 977 00:34:28,760 --> 00:34:30,289 all of these things? 978 00:34:30,290 --> 00:34:32,718 I've put down a few few ideas, 979 00:34:32,719 --> 00:34:36,019 like spread the word on the FCC issues. 980 00:34:36,020 --> 00:34:37,579 There's another point here which I didn't 981 00:34:37,580 --> 00:34:39,859 mention before, which is we can all 982 00:34:39,860 --> 00:34:41,928 analyze the security of the 983 00:34:41,929 --> 00:34:43,879 existing devices out there just to make 984 00:34:43,880 --> 00:34:46,099 the argument much more compelling, that 985 00:34:46,100 --> 00:34:48,589 locking down these devices will actually 986 00:34:48,590 --> 00:34:51,138 prevent people from fixing the devices 987 00:34:51,139 --> 00:34:53,509 because they come by the manufacturer 988 00:34:53,510 --> 00:34:55,789 buggy as hell and 989 00:34:55,790 --> 00:34:57,919 making it very easy for attackers to get 990 00:34:57,920 --> 00:34:59,719 into your network. And there has to be 991 00:34:59,720 --> 00:35:01,849 some way to have hardware that is 992 00:35:01,850 --> 00:35:03,209 actually fixable. 993 00:35:03,210 --> 00:35:05,869 And if we just make sure 994 00:35:05,870 --> 00:35:08,089 that we we show that this is an industry 995 00:35:08,090 --> 00:35:10,339 wide issue and that actually pretty much 996 00:35:10,340 --> 00:35:12,559 all of the standard routers out there are 997 00:35:12,560 --> 00:35:14,029 running horrible software, which will 998 00:35:14,030 --> 00:35:16,189 have horrible security issues, 999 00:35:16,190 --> 00:35:17,929 then maybe we can show that this is this 1000 00:35:17,930 --> 00:35:18,930 is kind of a big deal. 1001 00:35:20,040 --> 00:35:21,989 And one of the other things that I would 1002 00:35:21,990 --> 00:35:24,149 appreciate some real help with is 1003 00:35:24,150 --> 00:35:27,059 writing free eight to 11 drivers, 1004 00:35:27,060 --> 00:35:29,159 as I mentioned before, the empty 76 1005 00:35:29,160 --> 00:35:30,719 driver with the experience that I've 1006 00:35:30,720 --> 00:35:32,819 built over the time, I built that 1007 00:35:32,820 --> 00:35:34,649 thing basically in a month. 1008 00:35:34,650 --> 00:35:36,519 And now I'm adding support for a second 1009 00:35:36,520 --> 00:35:38,729 chipset where I've put about five 1010 00:35:38,730 --> 00:35:40,819 or six days worth of work in. 1011 00:35:40,820 --> 00:35:43,109 And it already does monitor mode 1012 00:35:43,110 --> 00:35:44,909 and it sends some packets so I can do a 1013 00:35:44,910 --> 00:35:46,139 bit of scanning. 1014 00:35:46,140 --> 00:35:48,209 I just like more people to get 1015 00:35:48,210 --> 00:35:50,429 involved with that field 1016 00:35:50,430 --> 00:35:52,529 so that we have the resources that when a 1017 00:35:52,530 --> 00:35:54,629 chipset vendor comes along and says 1018 00:35:54,630 --> 00:35:56,729 we want an open source driver, but 1019 00:35:56,730 --> 00:35:58,799 we need some help, that we have a pool 1020 00:35:58,800 --> 00:36:00,929 of people that can actually look 1021 00:36:00,930 --> 00:36:03,239 at that code and improve that code 1022 00:36:03,240 --> 00:36:05,399 and write some free software drivers. 1023 00:36:05,400 --> 00:36:07,769 And I can tell you from experience 1024 00:36:07,770 --> 00:36:09,539 that it's a pretty exciting field to be 1025 00:36:09,540 --> 00:36:11,309 in. And it's a really, really nice 1026 00:36:11,310 --> 00:36:13,589 feeling. When you brought up a large 1027 00:36:13,590 --> 00:36:15,749 part of code for the first 1028 00:36:15,750 --> 00:36:17,369 time and for the first time, you see are 1029 00:36:17,370 --> 00:36:19,379 now manito mode is working and I can 1030 00:36:19,380 --> 00:36:21,659 actually send packets and I'm just making 1031 00:36:21,660 --> 00:36:22,769 progress over time. 1032 00:36:22,770 --> 00:36:24,659 And it's I think it's a lot of fun. 1033 00:36:24,660 --> 00:36:26,939 And I hope that more people will figure 1034 00:36:26,940 --> 00:36:29,009 out that it is a very interesting 1035 00:36:29,010 --> 00:36:30,869 field and a very challenging field. 1036 00:36:32,110 --> 00:36:33,939 And one of the things that I just 1037 00:36:33,940 --> 00:36:36,519 discussed with with a friend of mine 1038 00:36:36,520 --> 00:36:38,829 some minutes before this talk was 1039 00:36:38,830 --> 00:36:41,049 I think we should get together 1040 00:36:41,050 --> 00:36:43,419 and create some some, uh, written 1041 00:36:43,420 --> 00:36:45,459 material or some presentations 1042 00:36:45,460 --> 00:36:47,799 specifically tailored at decision 1043 00:36:47,800 --> 00:36:49,899 makers in big chipset vendors and big 1044 00:36:49,900 --> 00:36:52,809 router vendors, probably differentiated 1045 00:36:52,810 --> 00:36:54,939 by target group, where we figure 1046 00:36:54,940 --> 00:36:57,069 out, like, what world are they living 1047 00:36:57,070 --> 00:36:58,839 in? Like what are the concepts that 1048 00:36:58,840 --> 00:37:01,149 they're used to thinking and and just, 1049 00:37:01,150 --> 00:37:03,249 uh, create something that is framed 1050 00:37:03,250 --> 00:37:05,169 in a way that it will provide them with 1051 00:37:05,170 --> 00:37:07,779 compelling arguments to do open source. 1052 00:37:07,780 --> 00:37:10,389 And I hope to get some some feedback 1053 00:37:10,390 --> 00:37:12,129 from maybe from you guys or from people 1054 00:37:12,130 --> 00:37:14,259 watching the streams later on how 1055 00:37:14,260 --> 00:37:15,790 we can create something like that. 1056 00:37:17,310 --> 00:37:19,289 And this is really all that I have for 1057 00:37:19,290 --> 00:37:20,819 now, and I hope you brought some really 1058 00:37:20,820 --> 00:37:21,820 good questions. 1059 00:37:32,910 --> 00:37:34,379 Thanks a lot for your presentation that 1060 00:37:34,380 --> 00:37:36,479 was really interesting, assume 1061 00:37:36,480 --> 00:37:38,609 somebody is already a pretty decent C 1062 00:37:38,610 --> 00:37:40,799 programmer, so what's the best way to get 1063 00:37:40,800 --> 00:37:42,299 your feet wet with Colonel Triva 1064 00:37:42,300 --> 00:37:43,979 developing, especially in the realm that 1065 00:37:43,980 --> 00:37:44,980 we are just talking about? 1066 00:37:47,170 --> 00:37:49,109 You mean how do you get into that field, 1067 00:37:49,110 --> 00:37:51,039 how to figure it, figure things out or. 1068 00:37:51,040 --> 00:37:53,309 I don't consider myself a good enough 1069 00:37:53,310 --> 00:37:54,809 C programmer to be quite honest and 1070 00:37:54,810 --> 00:37:56,039 probably don't have the resources. 1071 00:37:56,040 --> 00:37:58,349 I just wanted to invite you to 1072 00:37:58,350 --> 00:38:00,149 to give some practical advice. 1073 00:38:00,150 --> 00:38:02,259 If somebody has the resources 1074 00:38:02,260 --> 00:38:04,509 and some of the skill set C 1075 00:38:04,510 --> 00:38:06,569 C skill set and some understanding 1076 00:38:06,570 --> 00:38:08,759 of Linux programing or kernel programing, 1077 00:38:08,760 --> 00:38:11,219 what does he or she do to really 1078 00:38:11,220 --> 00:38:14,039 start getting into that community? 1079 00:38:14,040 --> 00:38:15,809 I think in some ways it's actually pretty 1080 00:38:15,810 --> 00:38:17,909 simple. You just pick something where you 1081 00:38:17,910 --> 00:38:19,979 find a device on the on the 1082 00:38:19,980 --> 00:38:22,589 net that can do Wi-Fi 1083 00:38:22,590 --> 00:38:25,079 and you figure out that Linux support 1084 00:38:25,080 --> 00:38:27,269 for it is working to some degree, but 1085 00:38:27,270 --> 00:38:28,829 it's not fully working. 1086 00:38:28,830 --> 00:38:30,509 And then you just start playing with it, 1087 00:38:30,510 --> 00:38:31,679 you start experimenting. 1088 00:38:31,680 --> 00:38:33,569 If you can figure out what's actually 1089 00:38:33,570 --> 00:38:35,519 going on, if you can write your own debug 1090 00:38:35,520 --> 00:38:37,769 code to figure out how the hardware works 1091 00:38:37,770 --> 00:38:39,869 and you just start playing with it 1092 00:38:39,870 --> 00:38:42,059 and see what happens, I think that's 1093 00:38:42,060 --> 00:38:44,249 the best motivation to get into something 1094 00:38:44,250 --> 00:38:46,559 like that, to not have a specific 1095 00:38:46,560 --> 00:38:48,509 plan like I need to do this and these are 1096 00:38:48,510 --> 00:38:50,819 the steps, but actually play 1097 00:38:50,820 --> 00:38:52,829 with something still until you start to 1098 00:38:52,830 --> 00:38:54,779 understand it more and just enjoy that 1099 00:38:54,780 --> 00:38:55,780 process. 1100 00:38:56,600 --> 00:38:59,089 Um, hello. Uh, thanks for the great talk. 1101 00:38:59,090 --> 00:39:01,659 Um, I have a question about far. 1102 00:39:01,660 --> 00:39:03,739 So from what I'm aware, there are 1103 00:39:03,740 --> 00:39:05,929 very few Wi-Fi chips with free 1104 00:39:05,930 --> 00:39:07,279 from firmware. Yes. 1105 00:39:07,280 --> 00:39:09,739 And, um, I think this is probably 1106 00:39:09,740 --> 00:39:12,229 not really investigated security issue, 1107 00:39:12,230 --> 00:39:14,329 because especially if you have a PCI 1108 00:39:14,330 --> 00:39:16,879 device, then back in the firmware, 1109 00:39:16,880 --> 00:39:19,009 you can basically own the full 1110 00:39:19,010 --> 00:39:21,679 device through the tech. 1111 00:39:21,680 --> 00:39:23,769 Yeah. And do you think there 1112 00:39:23,770 --> 00:39:26,059 was kind of the status was firmer 1113 00:39:26,060 --> 00:39:27,589 and do you think there's a potential to 1114 00:39:27,590 --> 00:39:29,839 get more chipsets with free 1115 00:39:29,840 --> 00:39:30,619 firmware? 1116 00:39:30,620 --> 00:39:32,719 And yeah, so far, 1117 00:39:32,720 --> 00:39:34,999 um, the fight is already to 1118 00:39:35,000 --> 00:39:37,099 at least get some free drivers and 1119 00:39:37,100 --> 00:39:39,229 I think free firmware, that goes a few 1120 00:39:39,230 --> 00:39:40,549 steps beyond that. 1121 00:39:40,550 --> 00:39:42,769 And I think it's a very important 1122 00:39:42,770 --> 00:39:44,329 fight to have. 1123 00:39:44,330 --> 00:39:46,579 Um, and I fully agree that it's 1124 00:39:46,580 --> 00:39:48,679 a big deal with with regards to 1125 00:39:48,680 --> 00:39:49,579 security. 1126 00:39:49,580 --> 00:39:51,589 As I pointed out, with the 10K firmware, 1127 00:39:51,590 --> 00:39:53,239 they have the approach of offloading 1128 00:39:53,240 --> 00:39:55,489 everything and they they have 1129 00:39:55,490 --> 00:39:57,319 some fancy bits in there that actually 1130 00:39:57,320 --> 00:39:59,449 pass TCP packets and do some 1131 00:39:59,450 --> 00:40:01,669 funny things with those and they do some 1132 00:40:01,670 --> 00:40:03,649 other protocol related things as well. 1133 00:40:03,650 --> 00:40:05,899 So I expect that there will be broken 1134 00:40:05,900 --> 00:40:07,609 code there and there will be ways to 1135 00:40:07,610 --> 00:40:08,869 exploit that. 1136 00:40:08,870 --> 00:40:10,979 And, uh, it's just not 1137 00:40:10,980 --> 00:40:12,169 the awareness of that. 1138 00:40:12,170 --> 00:40:14,209 It's just not very widespread yet because 1139 00:40:14,210 --> 00:40:16,039 there haven't been many practical attacks 1140 00:40:16,040 --> 00:40:17,050 on such firmware yet. 1141 00:40:19,600 --> 00:40:22,989 One question from the Internet is 1142 00:40:22,990 --> 00:40:25,549 which laptop manufacturer to require 1143 00:40:25,550 --> 00:40:27,010 Atheros drivers? 1144 00:40:28,150 --> 00:40:30,369 Um, there aren't that 1145 00:40:30,370 --> 00:40:32,589 many laptops anymore with, 1146 00:40:32,590 --> 00:40:34,239 uh, various drivers. 1147 00:40:34,240 --> 00:40:36,309 I think it was a four for 1148 00:40:36,310 --> 00:40:38,169 a short period of time. 1149 00:40:38,170 --> 00:40:40,329 There were a few laptop customers, uh, 1150 00:40:40,330 --> 00:40:42,459 that that used it, 1151 00:40:42,460 --> 00:40:44,649 um, that I don't know 1152 00:40:44,650 --> 00:40:45,939 if they actually shipped large 1153 00:40:45,940 --> 00:40:47,769 quantities. But these days, Qualcomm 1154 00:40:47,770 --> 00:40:49,869 Atheros basically gave up on 1155 00:40:49,870 --> 00:40:51,459 building parts for laptops. 1156 00:40:53,100 --> 00:40:55,289 On the left, are there 1157 00:40:55,290 --> 00:40:57,359 any wireless card 1158 00:40:57,360 --> 00:40:59,459 chipsets that you would recommend in 1159 00:40:59,460 --> 00:41:01,649 terms of Fermor openness 1160 00:41:01,650 --> 00:41:03,719 where the the 1161 00:41:03,720 --> 00:41:05,999 firmware is open for those 1162 00:41:06,000 --> 00:41:08,339 cards and there's production, 1163 00:41:08,340 --> 00:41:10,619 let's say, and hackable, so 1164 00:41:10,620 --> 00:41:11,620 to speak? 1165 00:41:12,390 --> 00:41:14,609 I know only of one 1166 00:41:14,610 --> 00:41:17,219 such thing. It's an old, uh, 1167 00:41:17,220 --> 00:41:19,859 Ferro's 11 new whispy device 1168 00:41:19,860 --> 00:41:22,049 where, uh, during 1169 00:41:22,050 --> 00:41:24,269 the height of the people, 1170 00:41:24,270 --> 00:41:26,099 lots of people working inside Atheros, 1171 00:41:26,100 --> 00:41:27,479 fighting for open source, they actually 1172 00:41:27,480 --> 00:41:29,849 managed to convince, uh, management 1173 00:41:29,850 --> 00:41:32,249 to release the firmware for that one. 1174 00:41:32,250 --> 00:41:34,229 There hasn't been that much development 1175 00:41:34,230 --> 00:41:36,479 afterwards, mainly because the firm was 1176 00:41:36,480 --> 00:41:38,489 only opened after the device was already 1177 00:41:38,490 --> 00:41:39,839 long obsolete. 1178 00:41:39,840 --> 00:41:41,999 But if you look for devices supported 1179 00:41:42,000 --> 00:41:45,069 by F nine K HTC. 1180 00:41:45,070 --> 00:41:47,139 Um, you will find, uh, 1181 00:41:47,140 --> 00:41:49,599 an open driver and the open firmware 1182 00:41:49,600 --> 00:41:51,759 and you can you can compile 1183 00:41:51,760 --> 00:41:53,019 everything there. 1184 00:41:53,020 --> 00:41:54,020 Thank you. 1185 00:41:59,000 --> 00:42:01,159 Hi, thanks for all the work you've put 1186 00:42:01,160 --> 00:42:02,059 in over the time. 1187 00:42:02,060 --> 00:42:04,669 I'm very happy users of Open WRP, 1188 00:42:04,670 --> 00:42:05,679 so thanks a lot. 1189 00:42:10,110 --> 00:42:12,239 Appreciated. I dabbled 1190 00:42:12,240 --> 00:42:14,399 in trying to do some work 1191 00:42:14,400 --> 00:42:16,709 and previously for some Atheros 1192 00:42:16,710 --> 00:42:18,899 chips, and that was a couple of years 1193 00:42:18,900 --> 00:42:20,969 ago when Atheros was willing to give out 1194 00:42:20,970 --> 00:42:21,970 documentation. 1195 00:42:23,160 --> 00:42:25,469 Are there any vendors that 1196 00:42:25,470 --> 00:42:27,629 are easy to deal with 1197 00:42:27,630 --> 00:42:29,309 in getting documentation? 1198 00:42:29,310 --> 00:42:31,559 I'm not afraid of signing any MBAs 1199 00:42:31,560 --> 00:42:33,839 or something like that. But like 1200 00:42:33,840 --> 00:42:36,509 I think many vendors are very reluctant 1201 00:42:36,510 --> 00:42:39,269 to give some random guy documentation 1202 00:42:39,270 --> 00:42:40,409 on the hardware. 1203 00:42:40,410 --> 00:42:42,479 Well, with, uh, with mediatheque, I 1204 00:42:42,480 --> 00:42:44,099 now have a working relationship. 1205 00:42:44,100 --> 00:42:46,289 So if you want to work in that field 1206 00:42:46,290 --> 00:42:49,049 and on such drivers, I could probably 1207 00:42:49,050 --> 00:42:51,419 introduce you and, uh, 1208 00:42:51,420 --> 00:42:52,859 I get for my own work. 1209 00:42:52,860 --> 00:42:54,929 I got the documentation under NDA 1210 00:42:54,930 --> 00:42:56,999 and maybe I can convince them to hand 1211 00:42:57,000 --> 00:42:59,099 it out to a few other developers as well 1212 00:42:59,100 --> 00:43:00,809 to make progress there. 1213 00:43:00,810 --> 00:43:01,810 All right, thanks. 1214 00:43:03,620 --> 00:43:04,620 That's 1215 00:43:05,990 --> 00:43:08,819 how we can push manufactures, 1216 00:43:08,820 --> 00:43:10,939 um, where are you from 1217 00:43:10,940 --> 00:43:13,199 the assistance from the I.R.S., OK, 1218 00:43:13,200 --> 00:43:15,379 how you can push hardware manufacturers, 1219 00:43:15,380 --> 00:43:16,279 um, which ones? 1220 00:43:16,280 --> 00:43:19,059 The chipset or the routers? 1221 00:43:19,060 --> 00:43:21,499 Oh, I, I think it 1222 00:43:21,500 --> 00:43:23,659 refer to slide 20. 1223 00:43:23,660 --> 00:43:25,819 OK, um, 1224 00:43:25,820 --> 00:43:28,099 the, the hardware manufacturers. 1225 00:43:28,100 --> 00:43:30,079 It depends on at which level like that. 1226 00:43:30,080 --> 00:43:32,299 The hardware manufacturers themselves. 1227 00:43:32,300 --> 00:43:34,399 Uh, if you can get the right contacts 1228 00:43:34,400 --> 00:43:36,589 you will find uh you sometimes 1229 00:43:36,590 --> 00:43:37,549 you only have to connect their 1230 00:43:37,550 --> 00:43:39,139 engineering departments with the people 1231 00:43:39,140 --> 00:43:41,239 making the decisions because they 1232 00:43:41,240 --> 00:43:43,279 will have learned about the frustrations 1233 00:43:43,280 --> 00:43:46,399 of using, uh, crappy vendor sticks. 1234 00:43:46,400 --> 00:43:48,529 Um, and they will appreciate 1235 00:43:48,530 --> 00:43:50,539 having something open, but they just need 1236 00:43:50,540 --> 00:43:52,669 to realize the power that I can actually 1237 00:43:52,670 --> 00:43:54,679 ask the chipset manufacturer to provide 1238 00:43:54,680 --> 00:43:56,399 something like that. 1239 00:43:56,400 --> 00:43:58,399 When it comes to chipset manufacturers, 1240 00:43:58,400 --> 00:44:00,469 it depends if you're 1241 00:44:00,470 --> 00:44:02,629 like the the if you're talking 1242 00:44:02,630 --> 00:44:05,029 to the market leader like Broadcom, 1243 00:44:05,030 --> 00:44:07,369 in many ways they 1244 00:44:07,370 --> 00:44:09,529 simply don't care much about, 1245 00:44:09,530 --> 00:44:11,359 uh, doing something open because they 1246 00:44:11,360 --> 00:44:13,399 already have a good position and they 1247 00:44:13,400 --> 00:44:15,409 already know the value of of, uh, of 1248 00:44:15,410 --> 00:44:17,059 their chips and their software. 1249 00:44:17,060 --> 00:44:19,129 And, uh, they they are likely 1250 00:44:19,130 --> 00:44:20,809 not seeing anything wrong with what 1251 00:44:20,810 --> 00:44:23,029 they're doing. So in some ways, 1252 00:44:23,030 --> 00:44:25,159 you probably have to go for the underdog 1253 00:44:25,160 --> 00:44:27,799 and, uh, help give 1254 00:44:27,800 --> 00:44:30,169 present them with some opportunities 1255 00:44:30,170 --> 00:44:31,429 to sell more hardware. 1256 00:44:31,430 --> 00:44:33,529 Like with some of the chipset 1257 00:44:33,530 --> 00:44:35,929 vendors that I looked at, I I guess 1258 00:44:35,930 --> 00:44:38,089 they must have been losing customers with 1259 00:44:38,090 --> 00:44:39,649 a crappy state that their software 1260 00:44:39,650 --> 00:44:41,899 softwares and and, uh, they must at some 1261 00:44:41,900 --> 00:44:44,479 point realize that better software 1262 00:44:44,480 --> 00:44:45,979 can actually lead to getting more 1263 00:44:45,980 --> 00:44:46,980 customers. 1264 00:44:50,250 --> 00:44:52,589 Uh, um, it's, uh, 1265 00:44:52,590 --> 00:44:54,779 very, uh, uh, good feeling 1266 00:44:54,780 --> 00:44:56,949 that when I saw your, uh, comic 1267 00:44:56,950 --> 00:44:59,069 messages that the whole source 1268 00:44:59,070 --> 00:45:01,439 code is occupied with your humanity. 1269 00:45:01,440 --> 00:45:03,599 And, uh, so, um, my 1270 00:45:03,600 --> 00:45:06,079 question is, uh, I'm, uh, 1271 00:45:06,080 --> 00:45:07,169 a beginner. 1272 00:45:07,170 --> 00:45:09,899 I mean, I have a good knowledge of Sinisi 1273 00:45:09,900 --> 00:45:11,879 programing, and I would like to 1274 00:45:11,880 --> 00:45:12,899 contribute something. 1275 00:45:12,900 --> 00:45:15,059 I would like to know, is there any Web 1276 00:45:15,060 --> 00:45:17,339 page or the IAC Journal 1277 00:45:17,340 --> 00:45:19,619 where I can have, uh, interaction 1278 00:45:19,620 --> 00:45:22,289 with the people who are contributing 1279 00:45:22,290 --> 00:45:24,599 their, um, which part, 1280 00:45:24,600 --> 00:45:26,499 Linux Wireless or OpenTable. 1281 00:45:26,500 --> 00:45:27,449 Your or which. 1282 00:45:27,450 --> 00:45:30,059 Which one. Yeah. Uh, drivers. 1283 00:45:30,060 --> 00:45:32,429 Um, I think there's not much, uh, 1284 00:45:32,430 --> 00:45:34,859 coordination going on among Linux, 1285 00:45:34,860 --> 00:45:36,069 uh, driver developers. 1286 00:45:36,070 --> 00:45:38,039 It's like people doing their own thing 1287 00:45:38,040 --> 00:45:40,109 and then, uh, discussing patches on 1288 00:45:40,110 --> 00:45:41,259 the mailing list. 1289 00:45:41,260 --> 00:45:43,379 Uh, there is a Linux, uh, 1290 00:45:43,380 --> 00:45:45,119 wireless summit frequently, but it's 1291 00:45:45,120 --> 00:45:47,429 mostly, uh, interesting for people 1292 00:45:47,430 --> 00:45:50,129 that already like it, regulars 1293 00:45:50,130 --> 00:45:52,289 in and dealing with it with, uh, 1294 00:45:52,290 --> 00:45:54,329 drivers. And I think I don't know if they 1295 00:45:54,330 --> 00:45:56,789 have any sort of beginners workshops, 1296 00:45:56,790 --> 00:45:59,039 but I think you can you can easily 1297 00:45:59,040 --> 00:46:01,169 get in touch with people if you just 1298 00:46:01,170 --> 00:46:03,029 pick something that's there that you 1299 00:46:03,030 --> 00:46:04,469 would like to play with and you just 1300 00:46:04,470 --> 00:46:06,749 start making some patches, fixing 1301 00:46:06,750 --> 00:46:08,819 some bugs, playing with a device, or even 1302 00:46:08,820 --> 00:46:11,309 asking for advice on, uh, 1303 00:46:11,310 --> 00:46:13,709 on on a technical detailed 1304 00:46:13,710 --> 00:46:16,019 level. I think if people notice 1305 00:46:16,020 --> 00:46:18,479 that somebody is coming along and, uh, 1306 00:46:18,480 --> 00:46:20,549 caring about not just how can I do 1307 00:46:20,550 --> 00:46:22,739 this, but like, what are the specifics 1308 00:46:22,740 --> 00:46:24,389 of this and this and this part? 1309 00:46:24,390 --> 00:46:26,999 Um, they can probably find the motivation 1310 00:46:27,000 --> 00:46:28,529 to help them along and to get them 1311 00:46:28,530 --> 00:46:29,999 involved in discussions. 1312 00:46:30,000 --> 00:46:32,309 So I think there's lots of ways, uh, 1313 00:46:32,310 --> 00:46:34,409 simply by playing with something yourself 1314 00:46:34,410 --> 00:46:35,670 that you can get into that field. 1315 00:46:41,000 --> 00:46:43,129 I have a question about something I don't 1316 00:46:43,130 --> 00:46:45,679 understand in this issue, as your 1317 00:46:45,680 --> 00:46:47,989 talk has the title Unfreedom considered 1318 00:46:47,990 --> 00:46:49,179 harmful. 1319 00:46:49,180 --> 00:46:51,289 Um, what is it actually that they 1320 00:46:51,290 --> 00:46:53,299 consider harmful? What is the vendor 1321 00:46:53,300 --> 00:46:55,489 incentive not to publish this 1322 00:46:55,490 --> 00:46:57,709 as open source instead of locking 1323 00:46:57,710 --> 00:46:59,359 it down? I understand, of course, the 1324 00:46:59,360 --> 00:47:01,099 incentives for publishing it is open 1325 00:47:01,100 --> 00:47:02,809 source. But why? 1326 00:47:02,810 --> 00:47:05,399 What is the reason for them not to do it? 1327 00:47:05,400 --> 00:47:07,129 Uh, some of the reasons are 1328 00:47:08,180 --> 00:47:10,789 they are always afraid of losing control. 1329 00:47:10,790 --> 00:47:13,139 Um, in many ways in 1330 00:47:13,140 --> 00:47:15,229 maybe they get the impression that if 1331 00:47:15,230 --> 00:47:17,089 they publish something, then other people 1332 00:47:17,090 --> 00:47:19,279 will do different things with that and 1333 00:47:19,280 --> 00:47:21,589 they have no control over what happens 1334 00:47:21,590 --> 00:47:23,899 with the result. And apparently on many 1335 00:47:23,900 --> 00:47:25,819 levels, that matter is a big deal to 1336 00:47:25,820 --> 00:47:26,729 people. 1337 00:47:26,730 --> 00:47:28,549 And then there's also like big 1338 00:47:28,550 --> 00:47:30,889 corporations like Qualcomm, they fully 1339 00:47:30,890 --> 00:47:33,649 buy into this imaginary property 1340 00:47:33,650 --> 00:47:34,699 kind of thing. 1341 00:47:34,700 --> 00:47:37,099 And especially that like the Qualcomm 1342 00:47:37,100 --> 00:47:39,499 itself, their business 1343 00:47:39,500 --> 00:47:42,109 is, as far as I know, patent licensing 1344 00:47:42,110 --> 00:47:43,789 and anything that's even remotely 1345 00:47:43,790 --> 00:47:45,889 involved with open source has 1346 00:47:45,890 --> 00:47:48,019 to be a separate company just to 1347 00:47:48,020 --> 00:47:49,819 to keep the lawyers happy. 1348 00:47:49,820 --> 00:47:52,099 And, uh, the lawyers themselves 1349 00:47:52,100 --> 00:47:54,289 are also establishing lots 1350 00:47:54,290 --> 00:47:56,629 of paranoia about all the bad things 1351 00:47:56,630 --> 00:47:58,279 that can happen if you publish open 1352 00:47:58,280 --> 00:48:00,379 source software like it might 1353 00:48:00,380 --> 00:48:02,689 infringe on somebody else's rights. 1354 00:48:02,690 --> 00:48:04,759 And if it's not published, that's 1355 00:48:04,760 --> 00:48:06,499 open source. It might still be there, but 1356 00:48:06,500 --> 00:48:07,849 at least people won't see it. 1357 00:48:07,850 --> 00:48:09,919 Uh, and in some cases, 1358 00:48:09,920 --> 00:48:12,439 companies might also be be embarrassed 1359 00:48:12,440 --> 00:48:14,899 to to show the quality of their software 1360 00:48:14,900 --> 00:48:15,900 to the world. 1361 00:48:16,700 --> 00:48:17,700 OK, thank you. 1362 00:48:19,100 --> 00:48:20,850 From the IOC, yes. 1363 00:48:21,890 --> 00:48:24,469 How big should the customer be to 1364 00:48:24,470 --> 00:48:27,679 make the venues doing free software? 1365 00:48:27,680 --> 00:48:29,899 I think in some cases it actually depends 1366 00:48:29,900 --> 00:48:31,999 on having like at least a 1367 00:48:32,000 --> 00:48:34,309 million chips per year or something 1368 00:48:34,310 --> 00:48:35,629 or comparable volume. 1369 00:48:35,630 --> 00:48:38,389 So it typically has to be big to matter 1370 00:48:38,390 --> 00:48:40,519 of small companies with ten thousand 1371 00:48:40,520 --> 00:48:42,439 one hundred thousand units are probably 1372 00:48:42,440 --> 00:48:44,359 not big enough to convince a chipset 1373 00:48:44,360 --> 00:48:45,489 vendor to change its ways. 1374 00:48:49,460 --> 00:48:51,589 OK, I guess this was it. 1375 00:48:51,590 --> 00:48:52,590 Thank you very much. 1376 00:48:53,900 --> 00:48:55,070 Sorry, I'm sorry. 1377 00:48:57,480 --> 00:48:59,819 So another 1378 00:48:59,820 --> 00:49:01,979 question, OK, the RNC, we 1379 00:49:01,980 --> 00:49:03,719 got another question from the IOC. 1380 00:49:03,720 --> 00:49:04,519 Yes. 1381 00:49:04,520 --> 00:49:06,629 OK, why do the winners need to be 1382 00:49:06,630 --> 00:49:08,729 nice? They have no profits 1383 00:49:08,730 --> 00:49:10,829 from using their have for researchers 1384 00:49:10,830 --> 00:49:13,079 because they lose the possibility 1385 00:49:13,080 --> 00:49:15,509 to sell them research grade hardware 1386 00:49:15,510 --> 00:49:17,519 at much higher prices. 1387 00:49:17,520 --> 00:49:19,739 How how are you going to make them 1388 00:49:19,740 --> 00:49:20,999 to be nice? 1389 00:49:21,000 --> 00:49:23,249 Well, the thing with 1390 00:49:23,250 --> 00:49:25,319 with all kinds of research is 1391 00:49:25,320 --> 00:49:27,449 a lot of the useful research that 1392 00:49:27,450 --> 00:49:30,959 they benefit from, if it's open source, 1393 00:49:30,960 --> 00:49:33,329 comes from people that don't just go 1394 00:49:33,330 --> 00:49:35,939 and buy expensive research equipment. 1395 00:49:35,940 --> 00:49:37,859 And many of the vendors are actually not 1396 00:49:37,860 --> 00:49:40,229 in the business of selling expensive 1397 00:49:40,230 --> 00:49:41,639 research equipment. 1398 00:49:41,640 --> 00:49:44,249 And that brings me to another point 1399 00:49:44,250 --> 00:49:46,529 which which I heard actually 1400 00:49:46,530 --> 00:49:48,779 from from Atheros back then when 1401 00:49:48,780 --> 00:49:51,169 they were more open towards open 1402 00:49:51,170 --> 00:49:52,529 software. 1403 00:49:52,530 --> 00:49:55,289 They actually said that having 1404 00:49:55,290 --> 00:49:57,419 lots of small companies that are able 1405 00:49:57,420 --> 00:49:59,549 to build hardware that 1406 00:49:59,550 --> 00:50:01,649 can support themselves simply by 1407 00:50:01,650 --> 00:50:03,419 having open source software, they don't 1408 00:50:03,420 --> 00:50:05,249 need to use the support channels of the 1409 00:50:05,250 --> 00:50:08,009 vendor. They they all combined 1410 00:50:08,010 --> 00:50:10,109 might actually produce the volume of 1411 00:50:10,110 --> 00:50:11,609 one big customer. 1412 00:50:11,610 --> 00:50:13,919 So it it's it is 1413 00:50:13,920 --> 00:50:15,869 actually a way to increase sales. 1414 00:50:15,870 --> 00:50:18,149 And it is actually about many more things 1415 00:50:18,150 --> 00:50:20,219 than just being nice there. 1416 00:50:20,220 --> 00:50:22,349 There's a lot of benefit to be had from 1417 00:50:22,350 --> 00:50:24,539 that. It just depends on more people 1418 00:50:24,540 --> 00:50:26,579 making compelling, compelling arguments 1419 00:50:26,580 --> 00:50:27,539 in that space. 1420 00:50:27,540 --> 00:50:29,699 I think in many ways it's if you 1421 00:50:29,700 --> 00:50:31,769 look at it from the perspective of 1422 00:50:31,770 --> 00:50:33,929 the people in those companies, it is easy 1423 00:50:33,930 --> 00:50:36,929 to find a kind of a frame or a mindset 1424 00:50:36,930 --> 00:50:39,059 in which you can explain open source 1425 00:50:39,060 --> 00:50:40,919 in a way that makes sense to them from 1426 00:50:40,920 --> 00:50:42,739 from a financial point of view as well. 1427 00:50:46,500 --> 00:50:48,599 OK, no, this was 1428 00:50:48,600 --> 00:50:50,819 really the last question, so 1429 00:50:50,820 --> 00:50:52,709 thanks again for the work you do without 1430 00:50:52,710 --> 00:50:53,710 you. Thank you all.