Now, we have an idea of the basic principles of a secure bootloader. The next we will talk about secure former update. Why secure former update? Former update is a feature very common in IoT products. The reason of firmware update could be bug fixes, adding new product functionalities, etc. It is also a very necessary feature in order to keep improving the security protection along with the product lifecycle. In case any new vulnerability is discovered. However, adding the former update capability also introduce new services to attacks. Malware injections through update procedure becomes possible. Former content could be jeopardized or leaked during the update procedure. Device former could be downgraded to an older version where no vulnerabilities to exist. A secure former update shall mitigate those risks brought by the update feature itself. What should be protected during former update? First, former integrity and authenticity. Secure former update shall always verify the integrity and authenticity of the new former to be downloaded and installed in the device. Second, former confidentiality. Former content shall not be exposed to and authorize the party because of former update. Former content cannot be transmitted in clear in the communication channel for upgrade. Third, avoid former version downgrading. The secure former update shall also have anti-rollback capability to avoid device former being replaced by an older version of the former, which also has valid authentication data. A secure former update starts with the capability of updating the existing application inside the device. Devices need to be able to download the data of the new former through a communication port. Data might be transmitted through a wired or wireless communication channel. Depending on the application requirement, different communication port or method could be used. Former download can be a feature to be included in the bootloader. Application might also have the capability to download the former as well. That possibility is more linked to the constraints of the system, such as the memory space and so on. This is an example of the flash layout for the application with the bootloader. In case there is just one slot for the active application, most likely the download of new version will happen from the bootloader code. The bootloader would download the new version, verify the new version and replace the active application by the new one. There's also the case that there were two slots for the application, one for the active application slot and the other slot to hold the new version to be downloaded. In such case, the download of new version could happen from both bootloader or from the active application. And then after the verification of this new image, the active slot will be replaced by the new version of the former. One key responsibility of SQLFormerUpdate is to ensure the former authenticity. Former authentication happened during former update is similar to the same concept that we explained in SQL Bootloader. The goal is to verify the authenticity of the new version of former before installing it. The integrity of former will also be covered if it is authenticated. A new version of former shall come along with a set of metadata which includes necessary information for authentication, such as the former hash, signature of the metadata, other information describing the former itself, for example, the size, version, etc. The verification procedure will verify the signature of the metadata itself as well as the digest of the former content. Confidentiality is also a concern of the SQLFormerUpdate. To achieve the former confidentiality during former update, one option is to use a SQL Communication channel. For example, an IoT device can establish a SQL Communication channel with the server using TRS. All the former data transmitted afterwards will be encrypted. One concern of this approach is that you need to trust the former update server where your former could be originally uploaded in clear. How the former is stored on the server is out of your control. Another option is to have the former encrypted with predefined symmetry before uploading for update service. The former will always be stored on the server in encrypted format and stays encrypted during the downloading procedure regardless of the communication channel encryption state. Of course, the symmetric key to decrypt the former need to be provisioned in the device beforehand and that symmetric key need to be protected for its confidentiality and integrity. Then let's take a look at how we can protect the encryption key on SM32. First, RDP level 1 and 2, which is available on most of the SM32 family will protect the symmetric key from debug port access. And WRP can also avoid the key data to be modified accidentally or intentionally. Together with RDP2, key integrity can be assured. Product families with PCrop feature can also protect the key from being read through debug port or read by code as data. But of course, key content can still be retrieved by executing the code inside Visorab area. Then isolation mechanism can be applied to further protect the key from being accessed by application to avoid any key exposure due to application vulnerabilities. Different isolation mechanisms on SM32 can be used to protect the encryption key. On L0 and L4, Firewall is a feature that can be activated after power on to protect the key data and its usage to prevent any access by the code outside Firewall area, including book loader code itself and the application code. And it is still possible for application to call the former decryption service from Firewall protected area even after execution already jumped from bootloader to application code. On G0, G4, H7, secure bootloader, including the former encryption key can be put inside the secures and memory area which will not be accessible anymore after bootloader jumping to application. The limitation is that the former decryption using the symmetric key can only happen when bootloader code is still executing. It's not possible anymore after jumping to application. On L5, of course, the same secures and memory area and the protection mechanism can still apply on L5 to achieve the same thing. But in addition, trust zone feature can also be used to do the isolation by putting the key inside secure area and the application in non-secure area. The trust zone will bring more flexibility. On WB, there is the CKS custom breakage storage feature thanks to the service provided from the code running on M0 plus core and isolation mechanism between M0 plus and M4. The encryption key can be provisioned to the chip and be protected by CKS. Decryption using the same key can be invoked by both bootloader and application without exposing the key content. Anti-rollback is also an important aspect of the secure former update process. Former update shall check the former version and only allow newer version to be installed to the device. Former version info shall be part of the metadata provided along with former binary and need to be verified as well. Info of the version of active application former shall be kept on the device for anti-rollback check during the former update procedure. Integrity of the version info shall also be guaranteed. The new version former preparation flow. This is very similar to the flow that we explained in the bootloader section for the signing of the application binary. So again, you will need a public key pair and there will be a digest computation using the new version application former data and then the former digest and the other information of the former will be used to compute the digest as well as the signature data. And all the metadata including the signature will be combined with the new application. There is only one difference. In case former need to be encrypted then there will be also a symmetric key involved. And this key will be used to encrypt the former data and then the former to be downloaded is in encrypted format only. And then this public key of the key pair as well as the symmetric key will be embedded in the secure bootloader for the verification of the new version of the former to be installed. This flow chart gives an illustration of the basic flow of secure former update. So when the update starts the new version of the binary will be downloaded either from bootloader or from application. Then the metadata signature will be verified using the public key embedded in the chipset. If verification of first signature is okay then there will be a check of the version to make sure that we're not going back to an older version. If the version is also valid then the former will be decrypted in case it is in encrypted format. If not not the case then this step will be skipped. And then the former hash will be computed and compared with a value coming from the former metadata area. If the hash is also valid then we consider that this new version is authenticated. So this new version of the former will be installed and active application will be replaced by the new one. In this section we have addressed several main topics of secure former update. First, new former binary download capability through a communication channel. Second, insured authenticity of the new former to be installed by verifying the former metadata signature and the former hash. Third, ensure the confidentiality of the former during download by using a secure communication channel or by encrypting the former in the first place. And last, avoid former downgrade by checking the former version during the former verification procedure. Now you should have a complete view of security concept, STM32MCU security features and how those could be used to protect firmware. You have also the idea of what are secure boots and secure former update and their basic flows. So now we come to the end of this MOOC. Thank you for watching.


My name is Aran Bhattol. I'm a Berlin-based artist. I started the Dead Drops project a year ago, a little bit more than a year ago in New York City, where I was artist-in-residence at the Media Art Institute iBeam. The first Dead Drop I did together with my friend Brie at the New York Resista MakerBot location in Brooklyn. It's all about sharing files offline. I also assume that a lot of you have seen that project online, so it's more like a wrap-up talk of what happened over the year. It's about sharing files offline. You can make your own Dead Drop in any place you want. It's just a USB flash drive. You cement into a wall. In the city, it's... Yeah, of course, there's no internet, so there's no IP number, there's no tracking. It's about having fun with files and being anonymous. So there's a whole website around it. You can make your own Dead Drop and submit it to the Dead Drop database. This screenshot is a couple of weeks ago. Maybe now it's 800 Dead Drops. I don't know, it says 738. So there's been around 750 Dead Drops being made since last November 2010. I'm pretty sure not all of them are existing still, but it's an ongoing sort of self-running worldwide. I consider it as an art project, but it's also very useful. Many people have done it in different locations. There's always the three pictures showing the location where it is, the information... When you scroll down what you don't see here, then there's the OpenStreetMap location, and also there's information what people put... Not what they put on the Dead Drop, because you should not tell online what you put on the Dead Drop. And then there's many people doing spin-off ideas. It goes different directions. These guys, they sold the LED out there to the brick wall. There's also wireless drops so you can submit Dead Drops in different types of Dead Drops. I also implemented doing live drops, which is actually a fire-sharing party. Not many people use that, but this is the wireless Dead Drop, which is also useful. There's other people like David Darts. He does the pirate box you might have seen online. It's like software, it's a server running on a router box and all that stuff. It's interesting to look into that. Of course, I also assume there's many people here who do or have done geocaching. Of course, there's some correlation to that. It's interesting to look back in the history of letterboxing. On one hand, Dead Drops is the spy game. I hide something and the other spy picks it up. On the other hand, there's the whole idea of letterboxing, which is from mid-19th century coming from UK. You have walks in the nature and you find something in a box. You put your stamp in your book, etc. There's a whole interesting history about it. The Dead Drops world map is also improved since there's different people helping on the project, programming apps, there's an open API, there's recently digital overdose, translated the whole Google Maps thing to OpenStreetMaps, which is great. People use Dead Drops for all kinds of fun experiments. People have done art shows here in France, art show on Dead Drops in the city, so people go and look at files. Also, bands release their music on it. Did you find all kinds of interesting files on Dead Drops? This is the current Berlin map. We still need to implement if a Dead Drop is still in function or not. This is sort of missing at this stage. This is the submit form where you can upload all your stuff. The drop types you can't see now, but it's wireless drops, it's live drops, it's USB flash drops, and there's also somebody, and then there's other, somebody just installed SD card readers somewhere. It was on a show at the MoMA in New York City this summer. Fall called Talk To Me, like an interaction design show, and people could drop their art in the Dead Drop in the MoMA, so I encouraged everybody to go there and put your, because all the artists want to be in the MoMA at some point, so go there and drop your art on the Dead Drop in the MoMA so you can claim you have art in the MoMA. What people did, and they just sent me back the five Dead Drops which are in the show, so that was kind of funny to go through them and to see what's on there. This was just recently, the iPhone app came out. There's also an Android app, and I will show it later. I pressed over the last 12 months, 14 months, interviews, things going on. People, journalists especially, keep asking like, so what's on them? I keep telling them like, yeah, well, I don't know, you have to go and check them yourselves, and that's the whole point. I mean, so people mostly don't, or it's, yeah, you always need to explain, you know, I didn't do like the 700 Dead Drops, it's people out there in the world did them, I only saw maybe 20 or 30 when I go to the city, time to time I check them. Yeah, this is like the people who worked on it. I'm very grateful for all the team members here doing work over the years. Yeah, there's an Android app, there's like different HTML5, mobile page stuff going on. Bruce Sterling did with his class the whole thing to layer, to the augmented reality browser. So, as I said, if you're interested to work with the API and stuff, you're invited.


And that stuff dash extract Can you get one for melding? Um, I probably could I just melded a gem It might be too early. Do they have it available? I just melded a older Garon for a fitness thing Do they have it available no, I just got Zeno Giva. I don't have devil Devil Joe in here yet. Do I? No, I think I might have to kill him more and get him at a higher level I these not working. Oh, okay. All right. Thank you. Okay, so this I need to remake it. That's the one I actually That's what we have so let's go remake it You can trade for a gem at the Melder if you have a golden ticket is tradeable for devil Joe Even though he just came out and I'm not max level on him because I just started fighting them. So all right, let's Create a new one Turned off good must have been done down low Okay, let's get the new session. There's a new session for you See if that one works I'm pretty sure I have a gold thing because I haven't been spending them and I've been doing the week was It's just not there. I do not have a devil Joe Jim See I have I have two gold why very imprints Session is good. Awesome Everything is awesome. Let me see if I have a Investigation for a mr. Devil Joe Imagine once I get him to a high enough level. What level is he now? Please like three or four we'd be at the bottom and there is to Got long ways to go Escalation point session in chat if you want to join us we are fighting on PC. Let me just refill my stuff. I Think I read it, but I'll do it again Man, it's so much the bow is just stress. There's just no stress. I Mean you're you're kind of squishy, but this is like I'm not gonna say it's easy. It's just no stress What were we doing I haven't even looked at the events, okay, so the armor spheres are at the These guys Three target monsters for 9k that's kind of bad What's this one do kill all of those for 26k?  Yeah, kill four monsters for 20k And how long? 50 minutes They're crazy. I ain't doing that So let's do Uh, what's it called? I forgot name the quest this one Hunters flambé Yes, but mission session. Yes Explanation point session in chat if you want to join we're about to hit each To the wonderful wizard of us.  Oh, I can't go together. He doesn't know because I'm in this thing Well, what won't want chat you gotta use your jowl skins for something Ha ha draw some on picking those up. He's at one. Thank you. I found you a nice item me ouster I got an investigation out of it. What though? I see you over there trying to heal. I see you over there trying to heal Yeah, what was that? Sideswipe of death. You know almost ran right in that. I was just about to do that Flash flies boy. Oh, that went over my head. That was weird. I can't get to the tail What what what? Volcano chin monster that try had or the Geron Not together. Um, yeah The Jay Leno monster. There's no damage this guy. I take my dash use I think I did it's blowing now on pickle Joe He thought he wasn't living was he? He was just walking away using way too many napkins These stupid things in the way why I have done paws out chat I don't know why I got done paws out. It's the weirdest thing. I'm trying to do flash It looked exactly the same though the engine that The engine that no, it's what's the face up?  Hey, that was a thing.  Maybe my decorations are out or something. Oh, look who it is Can I craft another strap? Nope? Wait, well, I didn't bring anything. So Hey, I did you be this is my third kill Yeah, third kill. I need to get a gem for For the bow gun I'm trying to build for it and no gym only cucumber chef We're checking my plants. It's been a while. I gotta make some thunder bugs You got the gym I think I'll Change the sleep urban to thunder bugs and the honey. I'm I have no thunder bugs. So We're out to double up on that And we will rich soil or soft soil this I Saw investigations pop up. I mean, I hope they don't doing this wrong. I don't see no devil Joe in my investigation list Can you even get him in investigations? above the magic dragon Yeah, bye see let's take a max health with us and I'm gonna have to make some catalysts because everything's catalyst Seems like everything So I always seem to pass by it. I don't have any bitter bugs. I Got a hundred and fifty honey though. So bitter bugs it is. Let's go cultivate those I've been saying that for days and I still haven't done it Because of nuts chat. All right, let's do this again. All right, so I guess Anybody else supposed to join exclamation point session and chat to join us 85 messages Put up the magic dragon. Where's your freaking food lady?


You are going to light these two ends while I light this end. Okay. Are you ready? Ready. Blast off. Yeah. Bite down, boy, Jackal. Dude, your dog's a stoner. Can he also bong a beer? Nah, pretty much all he does is lie around and smoke his pipe. Hey, Jackal, can I see your pipe? No, no, no, no! Very protective of his pipe. When other people touch it, it does not light. Sorry, Jackal. Yeah, see, he's sorry.  That's one psycho dog, dude. Yeah. Hey, you know what we should do now? Eat? No. Eat. Ah, choice excellent, my friend. I'll get the keys. Oh, hey, listen, try this. I told my weed guy to step it up and he gave me that. What is it? It's called Mind Rape. It's actually pretty mellow. It doesn't sound very mellow. Well, he only had three other batches. Gorilla Panic. They're coming, they're coming, and something called This Is Permanent.  You got it. Nice. Good, eh? Good job. Yeah. Take pride in that. Hey, what's that smell? What smell, what do you... Come on.  If that money doesn't show, then you owe me, owe me oh. My jungle love.  You don't know Jungle Love?  The motherfucking time. You mean the guys in that Prince movie? Yeah, Purple Rain.  Now we're sitting on Conward about the time.   And Tommy here's my black man servant. What?   Really? Are you going to be cool at this party? Cool as fuck, G. You're looking insane, only your right eye is working. Do I look weird now? Yes, you look weird. Still weird. Let's do all the drugs. I don't really want to.  What?


My name is Harshad Rajakar. I am the liver transplant and liver surgeon at Manipur Hospital, Kharadipur. I am here today to talk about liver tumors. So liver tumors are, there are benign tumors and there are malignant tumors. Malignant tumors means cancers. There are a lot of benign tumors that may require surgery, but most benign tumors can be safely left alone. And it takes an experienced eye and experience rheologist to tell the difference between the benign tumor and a cancerous tumor. Cancerous tumors are of two types. There is a primary tumor coming in the liver and there is a secondary tumor coming in the liver. A liver that has spread, a cancer that has spread to the liver from another organ in the body.  What is called as a kolange kasurama, both of them are treatable. Once upon a time it was thought that a liver tumor cannot be treated simply because of the difficulty in operating on the liver. But nowadays we can safely do surgery on the liver with minimal blood loss and excellent outcomes. So all liver tumors can be treated. In patients in which the liver tumors cannot be cut out because of the liver itself being diseased, a liver transplant may be required. I mean patients with secondary liver tumors. Secondary liver tumors are also amenable to surgery and in which what is called as oligometastatic or that is tumors that have spread only to the liver and nowhere in the body can also be treated by cutting out the tumor in addition to giving adjuvant therapy like chemotherapy or radiotherapy. So liver surgery is very safe, easy and is at many times can save the life of the patient. Thank you.


it's new product time new new new new new new new new new new new new new new new new new new new okay we're gonna just jump right in yeah okay coming soon it's not out yet but a lot of people have been asking about it so i wanted to get it in the store for signups is the new prop maker feather this will be out in a week or two hopefully um but you can sign up now and it'll be notified when it's in stock it's uh the latest in our series of rp 2040 feather designs but this one is designed specifically to make it really easy to make props animatronics and toys without having to do any soldering it's got an i2s amplifier so it kind of improves on the the prop maker feather wing by having digital audio as a little servo port so you can connect small hobby servos it's got a button input it's got a list 3dh triple axis accelerometer and a neopixel driver as well as of course all the feather pins um and all the gpio that you would normally want to use you've got the four abc's and like 21 gpios and battery usbc for debug and charging um and there you can even disable the lipo charger uh we'll show how to do that later if you want to run this off of double a's because we're doing some prop projects and we're like oh what do we want to reuse um existing but you know double a battery pack um you can probably do that so terminal blocks reassemble make it easy to uh uh screw terminal anything you want on it'll be coming to the eight fruit shop soon but i want to just preview it now uh we have an update for the eight of fruit feather esp 32 s2 like many of our other feathers that use the lc 709203 battery monitor that battery monitor has been discontinued so we're now uh revising them all to use the max 17 048 um this has the max 17 048 it's otherwise identical has a tft screen and buttons um semi qt port uh esp 32 s2 battery and all that good stuff but the battery monitors just change from the lc to the max um type and we have libraries for arduino and circuit python on both okay next up uh we have a new product from our friends across the pond at pin maroney this is an inventor hat mini it's interesting it uses a very seesaw like thing going on there there's a chip um from newton that is pre-programmed with firmware that handles all the timing for servos and motors so that you don't have um to do that on the raspberry pi or have separate i2c chip uh our cricket hats you know much more complicated but it's kind of same idea but this is uh less expensive and smaller so it's can drive um eight servos well that goes with the previous sorry about that everything looks black and gold i know it's got a semi qt port and a user button it's got two motor controllers with a drv 8833 which you can get again on an i2s amplifier everyone loves this max 98 357 um and it uses also ports you can use with uh encoder motors so you can have um something that has encoder motors for more precise motor control hence uh hopefully assembled uh mini hat bonnet um you can plug right into your raspberry pi computer all right and the story of the show besides you lady our team or customers our community um has a little bit of a story yes so we actually uh got this email like a week ago um they'd seen the video but they were like this is what it's used for and i'm like it is uh so this is a captain of a first team so it's a robotics team and they have a board that they're required to use and um if you want to do something funky with it that isn't part of like the first ecosystem it's very difficult uh so they want to use neopixels because they want to light up the robot but nobody's written a neopixel driving library for this chipset um but they do have access to isport c so now you they could use this to control neopixels which is a very common request this is it um so this is a bunch of neopixels but this is the board um so the way the board works is it also has a little helper chip on there and uh let me show it on the overhead because it's um it's not lit up but i can show how it works okay so let's again um so let's say you have a microcontroller or a board in this case i'm using an rp2040 because but it which does have neopixel support but maybe um all the pios are used on your rp2040 and so you want to uh control some neopixels or maybe you're using some exotic chip that again nobody's ported a neopixel driver for um but you still want to control neopixels you need that specific timing it's very hard to do so this chip on here the um at tiny 1616 will take um messages from i squared c over here uh from the rp2040 and then convert you know it'll say light up this pixel that color and then when it's done it says please show the pixels and it will write the data out to the terminal ports um so in the back there are five terminals one thing to know you will need separate five volt power the uh neopixels need about 20 to 40 milliamps per led and so if you're driving in any neopixels you're not going to be able to power them over this little thin wire here you'll need a chunky power supply and chunky wires and uh either connect them to this terminal block which then goes through and powers the neopixels um or you can do something like this where um you have a five volt power supply and you just power it directly into the red and black wires of your neopixel but then the signal wires the white and gray wires here are signal and ground um this data will come out of this chip and so you just have to send the i squared c commands and most chips you know do support um i squared c first easily and we've documented the commands so if you're not using circuit python blinka or you're not using an Arduino compatible chip we have libraries for those if you're using something else you could of course port it to that platform you can drive up to i think 512 pixels but i will note you're driving the pixels over i squared c so it's not going to be very fast you can run this at uh one megahertz uh i squared c and that'll do much better you know the default is a hundred kilohertz on many platforms i would bump it up to 400 800 one megahertz clock rate uh and you should light up as a few pixel let's start you should write as few pixels as possible before you write that show the entire strip because every time you set change of pixel color it has to send a message back and forth to say hey this is what the pixel color should be um so that will slow it down and you're never going to be as fast as native neopixel driving but if you have no other way of driving neopixels it does work just basically as you get to like 200 pixels it can slow down a bit but for um you know about 100 pixels writing uh the data you have 800 kilohertz or one megahertz um you'll get almost equivalent to native neopixel uh driving speed so um this could be a really easy way for you to add neopixel support to a chipset that you've got as long as it's got i squared c three volt or five volt i squared c it'll work with and it even has a little switch cap converter here so if you're running this off of three volts it'll generate a five volt signal for a nice clean neopixel driver and you can change the i squared c address if you want with these jumpers


And monitor. Still not the same number. No. Okay, what I did was take the failed monitor by some parts from China connected all open to other working. At the time I had a banana pie and I thought, well, why not stick it all together and that's what I did. I'm powering it from a 12-volt printer supply but obviously you can't shove 12 volts into your pie so still a few regulators on there. The regulators I used because of what was available locally are the small charge USB chargers you put in your power. Still gives a 5-volt output because I also had a fair of a laptop I had to spare my drive. So the banana pie aren't like most of the others actually I'm supposed to be kid-interesting aren't I? Where are we going? Why isn't it shown to me? I get powerpoint. And this is a given powerpoint and it's worse. It's not shown. There we go. Finally, you have a blog where I've got more information on there. Oh, of course. Right. Do you need some homework? Yeah, homework, homework, homework. Oh, that's a homework. But the banana pie uses the A20 chip which has native Ethernet work built in. It's also got native static work so as a data server it would easily outperform the quad-core machines and even the latest Raspberry Pi 3. When it comes to calculating it doesn't have to muscle but if you're just using it for a database or a web server this is the one to use. So that's what I did and to get this setup but not so much where are we going? As most of you already know we're operating with Linux on these boards so I put on my SQL database, Apache web server, PHP also add new services on my own and a few extra little bits of pieces so that's basically what I've done and if you don't know about SAMBO which I'm sure a lot of you do it's the piece of software that allows you to use Windows networking to connect to Linux boxes definitely something to Google more homework but don't worry it's not as bad as brain surgery in the real world and being a developer I use version control software SCM SCM SCM and more familiar with the development of Linux so I just installed it Let's not fight about SCM Okay we won't fight about SCM would you like to see yes instead? Yes Okay now we know who the developers are because they're all laughing Of course people think about version control in the context of software development however it's also very very useful that you're writing novels and things like that because if you mess it up you can go back in chapter it's starting to get a bit more interesting so it's kind of a lot of useless and there's a few of the things you can use in part of a lot of you already knew this too so yeah still these are brain surgeries so you have it there exactly what can be done the advantage this board has is you can strap the proper hard drive to it which is cheap and very easy to get a terrible amount of data in there if you want another one for getting started people and not for the experts you already know normally when you get to your computer and set it up first you've got to get in out of command line somehow if you don't have a screen it's very easy over the network or a serial port in my case I use a serial port and that's the adapter that should be in every hackers to locate USB to serial there's a bit more about setting up the hardware there's plenty of devices ready to be available now from China Custody nuts and a few look them on the side here and then 5 amp power supply you can up that up and use any old laptop supply then as your main supply for I used a powerful one here so I could power 12 volt and 5 volt because I needed to read between a half inch drive of course if you're connecting external USB drives to Raspberry Pi's or any of the other Pi's it overlaps the USB port you've got to use power to USB or hack the cable that's the power supply that's the good power supply we have this one one thing you must do with these is adjust the voltage before you connect it to anything and you can't do that so you don't actually touch it yeah we've done that always a good idea you can't do what you want to do this unit has the maximum main voltage of around 30 volts and its output voltage will vary from around 25 volts to something of that nature and when I was putting this little mess together you can see what I've got here a new LAN driver because there were both gotten into monitors I had the banana Pi power drive and power supplies I extracted from the cigar chargers for your car yeah there's a big amount of glue in there that I've got together too I've been messing about with our reunos lately as well and I've discovered that I can get an Arduino to work as an I2C slave as well as an I2C master saw I'll be hooking down on my Pi next so I do have a I said any further questions or want us to do anything like this come look for me and we'll have a chat about an exchange email address and so on okay thank you


All right, let's get going. I think the room is full. So my name is Magnus Kasem. I'm from Intel and we just got a blank screen. Perfect. And you need to log in. I don't know your password actually. Probably just as well. All right. Thank you. So what I want to talk about today is some fundamental new technology. I think you really need to start to work on to realize the vision of cloud native network functions. So what is cloud native? It's like the buzzword of the year. Everything's cloud native. So I want to just give you an overview of what I think it is. At least you might or might not agree with this, but this is my view. So I think of cloud native, I think of many small network functions. Think of like Google stuff where you're like thousands of millions of things just running on a big server. It runs in containers, which is basically the same as a process with the namespace. It is really high availability. Something crashes, other things takes over, other processes takes over, and a crash doesn't really affect anything else in the system. It's also automatic scalability. There's not one person sitting there, pin this there, instantiate another instance of the application on that core. It's just automatically scales. Because if you have millions of nodes, there's no way you can do this manually. It's secure, of course. That's very important today. And one of the most important things here, it's deployable at scale. I mean, million nodes, 100 million instances of applications running. And to get to that scale, it has to be dead simple. There's no way you can do this and it be complicated. It has to be incredibly simple. And you have some kind of load balancing in this picture to the right there. You have some packets coming in. You have some kind of load balancer that balances between servers. Can be implemented by servers, could be in appliance, whatever. Doesn't really matter here. And once you get to this server, you also have some other kind of load balancing in your server to load balancing between the apps or the processes containers that run there. And so there's a hierarchy of load balancing in the system. And best performance is not a main driver in the system. The main driver is all the other things. Of course you have a good enough performance because if you only can process a packet a second, nobody's gonna use this, but it's not the main driver. These other things are more important. And something to note here about my talk today, it's the cloud native systems that use the Linux stack is not a focus of this presentation. When I say cloud native network functions, I mean you want a raw Ethernet frame into your application and process it. So this is the SDM room.  I mean cloud native systems using the Linux stack and L7 protocols and stuff like that. It's really interesting, but it's not the focus here. They're probably not even in this room. So okay, so if we look at the requirements there from the previous page, what are the properties you need in your system in order to satisfy those requirements? Well, I listed a number of properties here. So of course you need to be hardware agnostic, just using Linux APIs only. It's really hard to be deployable at scale and automatically scale if you have, because if you're deployable at scale you have systems that are very different. You can't have a million nodes that are exactly the same. It just doesn't work. So you have to be abstract away the hardware. You have to have fault isolation and restartability because we said there are many, many processes here. There should be high availability. There should be secure. So you need fault isolation. Everything needs to be restartable. You can't just restart the whole system. It just doesn't work. Just restart a single process. And of course because we're talking about having millions of processes, you have to be able to say that you can have multiple software versions running at the same time. And it should be upgradable during runtime because you can't just stop the system upgrade all one million instances at the same time. It just doesn't work. You're always gonna have very many different versions of your software running at the same time. And they have to talk to each other and work. You're gonna have multiple versions of the Linux operating system and multiple versions of your hardware and so on in this system because it's just so large. And you need to be able to support many processes per core because one way to achieve automatic scalability is to sprinkle out processes everywhere and just let the Linux scaler take care of it. If some process is more used than another, it will be moved to its own core and so on. And of course in order to realize this you also have power save because if you're just busy polling everywhere, it's really hard to yield to something that's more important or more used. And it should be secure. So we want all security features of Linux working. None of them should actually be disabled. I mean, you can pick and choose, of course, depending on your system, but all of them should be available if you want to use them. And debuggable observable, if we have one million nodes, it's really important it's debuggable and observable in the running system. You can't just insert the GDP and stop the system and try to single step through your problem. It has to be debuggable, observable by runtime tracing. Rotating and switching the kernel to this load balancing and of course it has to be binary compatible and work on any standard Linux. If it doesn't work on any standard Linux, it's hard to be deployed by scale. So because there are gonna be so many different versions of Linux in this big system. So the desired systems that we'd like to point out here is like, yes, okay, so we have a number of cores, we just have a standard Linux on there and on top of everything core, there's one or more processes running. And these are our apps, these are the cloud native network functions. Inside this app, if you look at it, there's a user application and on the bottom of it, there's a packet access library. So think DPDK or VPP or something like that, that it just receives raw packets into this process and the packets access library, provides that to the user app. And if you look at this, if you go back and look at all these properties, if you just put all the drivers in the side of the Linux kernel, you get all these properties by default. This is just an ordinary process running in Linux has all these properties. So the key thing here to realize this is to make sure all the drivers are in the kernel. And you get all of these things, which is really nice. So that's what we're trying to do here saying that, okay, let's say all drivers are in the kernel, what do we need to do in order to realize this? So my goal here for this cloud native network function or this data plane is to have dead simple out of the box cloud native networking for this network function. So you just work. It has to be dead simple. And it has to have all the properties I have done previously and should be supported by all major distributions. So you should go in kernel.org so you get to read that and Ubuntu and SUSE and all these other guys. It has to be binary backwards and forwards compatible. So if you do something today, it should also run on the hardware that comes out in two years because you might still have that piece of, or that binary or piece of software in your system. And it has of course has to have good enough performance but it's not the main driver. And the way we're gonna realize this is to get the traffic into the application, we have AFXDP today to get fast network traffic in there and to have drivers for accelerators, we can use IUU ring. And of course we also have VART-IUNET that's another option to get network traffic with the software abstraction into your app. So we're just gonna use those three interfaces and say all drivers are in the Linux kernel. Okay, so if we say that all drivers should reside inside the Linux kernel, it's really important to say so we have these desired properties but we also have properties we can't have if we're gonna realize all these things here. For example, we can't have SRIV. SRV exposes hardware directly up into a process and then we lose a lot of these features here. I mean, it's not gonna be hardware agnostic for sure. And some other things. And same thing with the user space drivers, it goes with if you have SRV, you need user space drivers. Unless we can agree on a single standard for all mix but that hasn't happened yet. We can't also use pin cores and memory because if you pin cores and memory, well, you can actually use that but you're gonna end up with a system that's so expensive that you can't run it because every single process we have hundreds or thousands of these per core it's gonna have its own pin cores and pin memory. I mean, this doesn't work. It's gonna be too expensive. And also, I mean, it's hard for us to use busy polling and at the same time have many processes per core or choose PowerSafe. Of course, we can do a little bit of busy polling but at some point we have to yield to some other process or to the system. And huge pages. There's nothing really wrong with huge pages but the problem with huge pages is it's a resource, a finite resource not handled by the operating system. So if you think that you have 1000 processes on your system, who's gonna get the huge pages? I mean, today it's just the first guy that comes up and you squabs them, you know. So any resource not handled, any hard or finite hardware resource not handled by the operating system, we can't expose those and we can't use them because then it won't be simple and it's not gonna scale. Another thing we can't use is shared memory because shared memory then we don't have fault isolation and then we don't have restartability. We can have shared memory in some cases. I mean, we can share packets but we probably can't share the control structures controlling the packets because then it's gonna be really, really hard to implement that algorithm. That's still gonna be fault isolation, restartability and have multiple software versions with a shared memory control interface between two entities that can come up and down as they want. Maybe that's solvable but it's really, really hard. So better not to use it in these circumstances. But for, you know, just packet buffer sharing that's very, very likely fine. We can also not have a one-to-one virtual to physical mapping because if you have 1000 processes they all have to get this. It's very unlikely they're gonna get the same in virtual to physical mapping at one point. It's also finite resource then because, yeah. Also just we don't want more than one crossing of user kernel space boundary and this is for the performance reasons.  You don't wanna bounce back and forth like crazy. If you need to do it, do it once and that's then from kernel to user space. If it's ingress or egress it's user space to kernel space but do it once. We also don't want monolithic software because that means we'll have a big blob and this big blob we have to use in 1000 processes. That's gonna be very expensive too.  Custom kernel modules, same thing. Don't want that because we want to work on any standard Linux. Also can't have a complete kernel bypass because, I mean, we're gonna pretty much coexist with standard applications and these kind of network function applications take raw frames. If we bypass the whole kernel well a lot of these things just start to break down. Maybe we don't get, you know, power saved. We don't get all security features working and a lot of these things start to break down.  I mean, we might have one process per core. We might have 100 processes per core. They might be pinned sometimes, you know because performance reasons they might float around. I don't know. It's up to the guy that makes or the woman that makes the system. The problem is here that, I mean, the list on the right, I'm saying, don't use this. This is kind of the list of what we're using today. And this of course is very problematic. So this is what like DPD, KVPP and anything else uses today to get high performance networking into a process, you know, a virtual machine. And this of course is the challenge of today's talk. So I'm telling you don't use this. And the problem, I mean, the key problem here is that with SRIV and user space drive is you get, you know, using all the features that the NIC has. You can use all of them to get really good performance. But if you have an operating system, the main purpose of an operating system abstract away the hardware. That's the main purpose, you know, so you can run everything in. So by definition, an operating system cannot expose all the features that the NIC has. It just doesn't work. But so it's always gonna be much less features on the operating system API level than you have on the hardware. So what I'm asking here today is like, what do we need to develop in Linux to make this cloud-nating network function with all drivers inside Linux feasible? So what do we need to work on the next few years in order to get to a point where it's actually you get good enough performance and you get the properties that I told you about. And I'm just gonna summarize some of them here. And we're gonna go in more details on them. But the first one is like, we need to support metadata and offloading in XTP and AF-XTP to get that up to the application because there's a lot of features in the NIC that we really need. I mean, some accelerators really need to get high performance. I mean, just think of, you know, check something or TSO and stuff like that. It does not exist today. You don't get those features in Linux user space. Some of those features can be used by the stack, but they can't be used for raw packets directly in user space. So that's something we need to do. We also need to make it easy to orchestrate and control because what you're gonna end up with, you're gonna probably end up with a slow path. You know, I mean a path going through the Linux app up to some applications. You're also gonna have these kind of applications that I'm talking about here that just takes raw packets and they need to coexist. But they're probably only gonna be controlled by, you know, Kubernetes and Selium and those things through the Linux stack. They're two completely different worlds today. They don't talk to each other and that's problematic. So that's a whole, a couple of slides on that. And something we need to work on is also Q management. Due to the fact that you want, you know, zero copy semantics in user space, you have to dedicate hardware cues of the nick in order to get this into user space. And there's no such management at all today from user space in Linux. They just, it's just hidden and abstracted away and we can't have that now. We really need to expose these resources and be able to allocate and free them from user space. And I'll talk about that in a couple of slides too. And the last one is that we really need a packet access library designed for cloud native and Linux because today they're designed for the right hand column. But I'm saying we need something designed for the left hand column. And those are completely different, you know. And so we talk about that, is that, you know, do we evolve DPDK? Do we evolve something else or do something new? What is it? Or is there a DPDK revolution? I don't know. But we'll have a chat about that at the end too. Okay, so let's go into some details. So starting with metadata and offloading. And this is, I think this is similar to what Thomas talked about that DPDK. You're over there. You have some similar ideas on this, I believe. So you can check that DPDK talk from last year. So what we want here is that, so we have a piece of hardware. It supports some offloads or some, you know, some kind of metadata. And in this case, it's like an RX timestamp. It's an IPv4 header where it starts. IPv6 header where it starts. And it's a UDP checksum if it's okay or not. And these are just examples. So it supports these four. And then you have a piece of software that wants to use a subset of these, you know. And in this case, it wants to use the RX timestamp and the IPv4 header. So the ideas that we had in the, you know, XDP community saying that, okay, let's describe this as this BTF. This is this format that goes with the E-B-P-F of describing the structure of structures or other things. And we describe them in this and we say, okay, we know the hardware has this, the timestamp in this location, the IPv4 header in this location, in its hardware structures. And the software needs these things. So you combine these things and say, okay, then I'll make a structure that, because I know that the hardware will put IPv4 header here and it's U16, I put it here. And then there's some other stuff that I'm not gonna use. And then the RX timestamp comes here. So this is like a one-to-one mapping from, you know, the structure inside the nick. So that's good. So I don't have to move things around. I can just expose this, you know, the metadata section or this section in the nick and I get this mapping. So this is good. And what I then do is like, because XDP hits has a jit. So once I load the program, it's jitted into, you know, X86 or other instructions. And what I can do then is you say, okay, now I know exactly where this IPv4 header start will be. And I know exactly where the RX timestamp to be. So I can recompile the program to exactly point to where I want these things to be. So I don't have to have an Mbuffer in SKB because an Mbuffer in SKB, it's the same. I mean, it's just a big structure of everything that you could potentially use. And then the driver has to fill out these things. You know, oh, I have to fill out it here. Copies in all the data into the Mbuffer in SKB. But in this case, we know exactly what we want to use and we know exactly where it is. So we can just produce code that directly accesses. It's just a load from that. If I wanna use IPv4 header, I just load from that location. The program just knows that. Perfect. So basically no overhead, except you have to access it, of course. But you don't have to go via another structure. You don't have to take the penalty of populating that structure for everything. You don't pay the penalty here. So it thinks it's good. The problem now is that this works great for, you know, you can see that it could work for HTTP because it can jit the program. But for AFX is P, it's more problematic. So as an AFX is P, you create your socket, you do some stuff in your program, and suddenly you do a bind. And at bind time, you decide which device, hardware device I'm gonna bind to. And then you say, oh, it's an internick. Oh, no, it was a melanox nick. And of course, these structures look completely different on these nicks and then you have to, you know, kind of recompile it again. So really what you have to do, you have to do a reallocation at the bind time with AFXP. And that's gonna be a little bit more problematic. So once you do the bind, you have to reallocate your data playing code to actually, in that case, only work on this nick that you bound to. But on XDP, you can do it, you know, at jit time. And another thing that, so for accelerators, they're probably gonna use IU U-ring because IU U-ring is for like storage devices that I, that's not a net dev. It's something that's instigated by user space, tell stack seller to do something, it replies. And so how do we use, you know, metadata to IU U-ring, I don't know, but it's also needs to be extended. So this is a big area. It's gonna take a lot of time to, you know, iron all these things out. Okay, another thing is controlling the fast path from Linux. So now I said we have a slow path, going through the Linux stack and we have a fast path. And actually this picture is a little bit wrong. So the XDP layer should go underneath both of these. It's not only here, it's actually underneath the slow path too. So what we want to achieve here is we want the Linux control path to set up all actions for both the slow path and the fast path. And the fast path, because we're using, you know, AFXP now or IU U-ring or something with dedicated hardware queues, it needs to have, you know, its actions inside the NIC. If the NIC can spread the packets, great. But then you need to set up the NIC. If it can't, you can do it in XDP. So a good thing here is that all packets will pass the XDP layer, even the ones going to the slow path. So if you want something, for example, we want to have a common routing table. We could actually use helpers in XDP. So we can have, because all traffic passes XDP, we can look up our route table inside XDP. And this route table will be exactly the same one as the one that's existing in the Linux stack. So this, we call a helper in XDP. So this helper in XDP, you call in the XDP program, it looks up the state of the internal Linux routing stack and does some verdict, you know, other routes it or passes it to units to use a space or drop it or whatever it is. So we need to really start to develop these helpers. There are very few of these today, one or two. But there need to be many, many more in order for this to be able to coexist. And another challenge is, of course, that if you really want to have high speed, you can't do everything in XDP. XDP is kind of here. It's a very generic and good backup. But if you put everything in XDP, it might slow down. So you want it to be able to push the stuff you can do to the hardware and the things you can do to the hardware into your XDP program. So that's another challenge in this area. Another thing we really have to make sure is that orchestration has to be dead simple. Today, I mean, orchestration, I mean, it's complicated, but what I'm gonna talk about here is orchestrating net dev. So what happens today is that you have a number of net devs in Linux representing ports, usually. And the orchestrator will take a net dev and put it in the pod's namespace. That means that it disappears from this main namespace down in the Linux blob and appears in the pod's namespace. And then the pod can use this net dev. The problem here is that AFXDP, and are you ring another, they need a net dev with real hardware cues. Otherwise you can't get zero copy. They need to be real hardware cues to put the packets in users space directly. So today, then, how do you create one of those? You can't. I mean, you have a net dev today which represents a port. It contains a number of cues all abstracted away. It actually contains a number of cues equal to the number of cores that you have in the system. So today, if you move that into the namespace, you just took away the whole port. And that can only be used by that pod. That's not what you want. You put the cable into your port and you want to fan out the traffic into multiple pods. But I just gave the whole port to that pod. There's actually no way to do this today. You want to be able to split up that net dev into multiple net devs each having maybe an rx and txq pair. And that's what you give to individual ports. So how do you create one of those? Maybe you can create it using like McVilan. So McVilan that takes a net dev and says, OK, I'm going to put a new Mac address on this net dev. And this ad station support that's there, it says that this McVilan net dev, it's going to have a real hardware queue pair. If I can do that, maybe then I can take that thing and give it to the namespace of the pod. And I create a multiple of those and I just chunk them out to different pods. Maybe that's doable, but it's kind of just saying that I'm going to route traffic based on Mac address. Well, maybe I want to route traffic based on VLAN or IPv4, that doesn't work. It's just Mac address. So we probably need something more flexible here. Another thing is the last thing there is that pods also need to have all memory pre-allocated.  So we need to do lots of pre-allocations here. We can't leave this to the pod. The pod also has to run on least privileges. So maybe it should get all of these things pre-allocated. That's something we need to look into. Another thing is this queue management. Explaining like this, so we have a number of, every single nick contains a number of queues, a number of physical functions, a number of virtual functions. And there's a number of steps in the beginning of when the nick comes up, maybe in the firm or even. That is splits these sets into like PFs that contain a number of queues, PFs that contain a number of queues. In this case it was 64 to PFs and 16 to the VFs. And this is split up, but at some point it's getting represented by a net dev in Linux. This is like E0, that's a net dev. And in this case it contains 48 queues. And what we would like to do here, it's splitting up these 48 queues to different users. For example, the Linux stack, the XDP application or AFXDP applications. So the problem I'm looking at is just these two steps. Given a net dev with queues, how can I allocate new net devs with the subset of these queues and create them? So basically something that should be able to use in the problem we saw before. I want, in that problem I have this net dev, this port, I want to create sub in our child net devs containing a number of queues that I should decide. And the design of this that I'm looking into implementing is to have a queue manager inside the kernel that basically takes care of all this queue manager. So everything that everybody that wants a queue, for example, the Linux stack needs one queue per core, like I said before, I say one RX per core and one TX per core. It goes and asks the queue manager for this. The queue manager then goes and asks the right device to that, hey, you should allocate this. And it allocates them and gives them to the Linux stack. And also XDP needs TX queues. And of course, we also need an interface towards user space here. So we can do this from the Kubernetes orchestration or actually the pod management. So the interface we want there is something that you can say, given this net dev, give me new queue. No, I want two RX queues and five TX queues on this net dev. So what I can do then in the previous example is just create an empty net dev, if I could do that with a device driver. And on that empty net dev, I just allocate queues. How many do I want from my app? I need five TX, one RX. Just allocate five TX, one RX, done. That would be very neat. But this is a big project, because imagine that there's plenty of device arrays out there and they're all written to this. Most of them have been written for not doing dynamic allocation of queues. And we really have to plug this in in such a way that we don't have to change any drivers for the basic support that's there. For example, this path, it should always work and it shouldn't require any changes to the device drivers because we can't change whatever, two, three, four hundred drivers. It just doesn't work. How many minutes left? Minus six, right? Not minus six, plus six. Exactly. Okay, last slide. So we also need a cloud-nated packet access library. And I'll give you to you to think about if this is something new, is this the evolution of DPDK? Is it evolution of something else? So it's the revolution of something that we have. But I'm just listing a couple of properties that I would like to see in such a library. And I know there's some talks later this evening about DPDK moving in this direction. So that's definitely one option. So stay around to listen to those. Properties that I would like, all drivers in kernel space or at least support drivers in kernel space should be set to small libraries. I just want to use the stuff I want. I don't want to use the whole thing. I mean, because apps are different. And if this is going to scale, it can't be just one big thing that I have to link against every single time. No hardware is supposed to use space in the data path and in the control path. I don't care in this case. I don't want to know. And does not force a platform on the users because many people, I mean, there's lots of people that have been in cloud-nated area. They already have a platform. They don't want to change it. So I can't force a platform on the user. It has to be their platform. It has to just be able to fit into whatever platform they use. So it should just be simple libraries. Yes, so no config launch or anything of this because that kind of ties into the platform. And it should work in both process and threads in any configuration. We shouldn't care. Because that's again, part of the platform. Somebody decided that this was a good platform for their application or system or data center. Skip about Mbuffs or SQL base or exposed applications. Just try to hide that because they tend to just explode in size because everyone wants everything. And we need to want applications to be able to crash each other. It should really be fault tolerant. So maybe not rely on shared memory, at least not for control, for packets. We'll be fine. We probably need that for performance. And it has to be debuggable, observable and testable from day one. Don't build this in, we'll start with. So, or it has to be a way to start with. Don't build it in later because nobody wants to pay for it. Usually I mean the rule of thumb is like 20% of your time you're going to spend in statistics in an app. And it's very hard to argue with your program managers or project managers that you want to spend 20% of the time suddenly or remove that from your app. But you really need this because otherwise it's not going to be able to scale and you're not going to be able to find your bugs. And first optimize freeze of use and the right functionality then performance. Donald Knuth said that what premature optimization is the root of all evil. You have to get people to use it first, then you can get it to go fast. All right, so conclude. So cloud native network functions is really completely different. Setting from an appliance or a virtual machine is really different. And most of the challenges I believe you can solve by having just all drivers in the corner. Push them down there, you'll get the properties because the operating system already had the properties you need, but you need to push all the drivers down into the corner for that. Problem of course is Linux is definitely not ready for this. So there's a number of things we have to work on that's going to take years to do. And it's metadata and offloading. It's controlling the data plane from the Linux stack so they can coexist nicely with the Linux stack. Orchestration support has to be dead simple. It has to work with Kubernetes and queue management because otherwise you're not gonna be able to get zero copy and not gonna get the performance that you want. And we have a couple of new requirements on packet access libraries and this we need to work on too. And how to do that is evolution of DPDK. Well, we have a couple of talks on that or is it something completely new or is it the revolution of DPDK? I don't know, it's, that's all up for discussion. All right, thank you very much. Questions? I don't know, we don't have any time actually, I have no idea. All right. Someone there? Should we pass the mic? Just to repeat the questions. All right. You wanna shout? All right. All right, you can just come up afterwards. All right.


This chapter focused on how cyanobacteria adapt to varying levels of carbon dioxide, CO2. It examined the mechanisms of inorganic carbon, CI, uptake, photorespiration, and the regulation of metabolism under different conditions. Additionally, it discussed the structure of various transport and uptake systems, as well as the genetic regulation of these systems. Furthermore, it explored the role of small molecules in regulating gene expression and enzyme activity. Finally, it discussed the potential involvement of small non-coding RNA in further regulating metabolism. This article was authored by Robert L. Burnup, Martin Haggeman, and Aaron Kaplan.


Russia's new nuclear weapon could completely destroy small U.S. satellites, like Starlink, in space. Russia's activities, which in recent days have caused concern about the threat to U.S. national security, are related to the creation of nuclear space weapons capable of generating an energy wave and disabling a significant number of satellites. CNN reported this with reference to three sources familiar with U.S. intelligence about the weapon. The weapon being developed by Russia, known among military space experts as nuclear electromagnetic pulse, generates an electromagnetic energy pulse and a stream of highly charged particles capable of disrupting satellites orbiting the Earth, even in space. As CNN sources explained, the United States has been tracking Russia's efforts to develop anti-satellite weapons, including electromagnetic pulse, for years. However, recently, U.S. intelligence discovered that Russia has made progress in developing nuclear electromagnetic pulses. One CNN source said the concept of this weapon emerged at the end of the Cold War. The source noted that the threat for the United States lies in the accumulation of disabled satellites in space, which would then prove dangerous to any new satellites we might try to put up to replace or repair the existing satellites. The weapon has the potential to destroy entire groups of small satellites, such as SpaceX's Starlink used by Ukraine in the war with Russia. U.S. intelligence assesses that it would be a last-ditch weapon for Russia because it would also affect Russian satellites. As of now, it is unclear exactly what progress Russia has made in nuclear electromagnetic pulse technology.


Let's get over to our man. Mr. Tim or as we do each and every Tuesday at the 3 30 hour Don't forget folks. You can reach Tim every trading day at odd dash oracle.com. That's odd or a D dash oracle.com Tim or what's going on? Well, I think you're actually quite a few charts. I don't know where to begin We can cover the gold market or we can look at the SMP's Wherever you want they're all red man Yeah, well actually we can do chart one. I guess okay yen was yeah, and Anyhow, I kind of got it all I do a lot stuff with ticks and trend. We actually covered this last week. I did get long I don't know a couple three four days ago forgot exactly what day it was, but anyhow, I still think There's probably a bottom in here. This is auction expiration week. Okay, I normally has a bullish bias and Well, I think last Friday I got a trend close of 1.79 and a minus 414 down to green And I got that listed on the chart there. Yes, and about three days or yeah, three days later I got a trend close to 1.17 and a 200 down to a 208 down to greeting and usually over the years I found if the trend closed at 1.2 or higher and at least minus 200 down to green the same day Usually you're looking at a low in that vicinity usually within two days Well, we've gone over you know over a week now And we're screwing around with this Gap area that happened. I got a list of their open gaps. That's a pink area Yes, and that gap formed on I think it was July 14th. We had 91 million shares and we're into that gap right now and know we're Looks like we're almost closing that gap as we're put as we're talking right now. That's correct I still think I think we're probably going to find support in this vicinity The reason why if you go down Below the volume chart. Yep, and you see the vixx there. I do and so yeah So what's happening here? You know the s these are making lower lows Over the last you know we two weeks we can have wherever it is And if you notice the Ed vixx is also making Now lower highs So normally if vixx trades opposite of the s SPYs So if the SPYs goes down and makes a new low the vixx should make a new high That's not happening here. You know, we made a higher high back in I don't know what date that was that was a Friday, so yeah, the last time it was the Let's see. I can't see it either the 8th Yeah, 8th of August. Yeah, it's so that's a week ago and now Even with even what today's decline we still haven't broke above that August 8 high right so that's it That's a small divergence But over time it works pretty well, so that's kind of a short-term deal My call is we'll still end up this this week could be wrong and This gap area we're in right now We're not blown through that gap, you know to get through a gap You at least need 91 million shares to get through the gap and today's volume is not going to do it Right volume So let me ask you something What do you do? What do you do when that you know, I understand what you're saying because we'll both hit the volumes What do you do when yeah, you're not getting the volume, but the price isn't holding through even the gap Do you know what I'm saying? Yeah, yeah, that's true, but you expiration we could tell you what all the weeks Yeah, right just have kind of screwy stuff right all come during expiration week And actually the week before it sprays we sometimes you get a little screwy. Yeah, so they're just shaking it out here Yeah, and you know, we'll know by Friday what? you know if not my Analysis comes out right or not because either we get fine support in here or we don't right so But I got enough that we got enough ticks and trend to say we got enough panic To find a low in this gap area, okay, and the VIX kind of helps support that idea. Okay, so But it's flip the flip today. It's in the next chart. So I'm say I'm bullish. I think we go up to okay The next higher gap, which is the August second gap up around 454. So I flipped to the second charge Yes, now this chart We're actually we we talked about this back in April May when we're on the radio Yes, we were talking that eight the April May period where the mark was going sideways and We were talking a lot of people in your trading room were bearish in that time frame. Yes And the reason why I stayed bullish and market kind of just went sideways It went up and down up and down the reason why I stayed bullish Because because of this chart, right? And does The top window is a VIX the second window down is a three-day average of the SPY VIX ratio And this ratio a lot of time leads away for the market So a lot of times you'll find bullish divergence at bottoms and bearish divergence at tops and so we did Back in that April May period that ratio is making higher highs Compared to the previous highs where the S&P's Was making pretty much as matching the previous highs But I always said in the past the SPX ratio a lot of times leads The SPY's right and so I stayed long anyhow turned out to be right. So what I want to talk about now is Currently if you look at the last box to the right, yes, the current time frame ran right now We're basically higher than the early July lows, right, but if you look at the ratio, it's lower than the higher so So that I'm not contradicting myself here. No, no, I got it. I get I get But the market rally here, which I think it will I don't know how high But if it does rally This this ratio is leading. So the next rally up you want to go short because this ratio Digests it at some point. We're gonna make lower lows in the SPY's, right? And that's that's that's that's the key Yeah, I got it right. I can see that right right, but if you notice that little Swing up we had here over the last week and a half. Yes On the ratio. Yes. Well, that's that swing down on the daily chart on the first first chart Right, just stay with us for a second. We're gonna quick break Tim and I gonna be coming right back folks We have the Dow industrials down 379 Nasdaq's up 164 S&Ps are up 56 Tim and I come right back folks If you're looking for potential trading setups in the stock market Then rocket equities and options report is a newsletter You should try Tommy O'Brien delivers options and equity trades when the markets present them using a combination of fundamentals and Technicals sign up for rocket equities and options report today with a 30-day money-back guarantee So you have nothing to risk for all the details and to start your subscription today visit the front page of TFNN comm TFNN educating investors You might think that if you want to be successful at trading in the stock market You're going to need a crystal ball after all it's impossible to predict the future, right? Like any endeavor in life before you decide it's impossible get some advice from the experts You might find that it's not so impossible after all for daily market overviews that give you direction on the key indices Selective stocks and commodities subscribe to the opening call newsletter at TFNN comm the opening call newsletter is written by Basel Chapman creator of the trading methodology known as the Chapman wave the Chapman wave Up-down sequence gives you an edge in identifying price turns finding the peaks and valleys and stock prices Get the opening call newsletter by Basel Chapman and your inbox every day first time subscribers Also get a 30-day money-back guarantee if you're not satisfied Let us know and you'll get a full refund within 30 days of signing up TFNN comm educating investors Biotech is booming, but for how long whether you think the biotech bull has room to run or has run its course trade Lab you or Lab D Directions daily S&P biotech three times bull and bear ETFs visit direction investments comm slash Biotech today an investor should consider the investment objectives risks charges and expenses of the direction chairs carefully before investing the Prospectus and summary prospectus contain this and other information about direction shares to obtain a prospectus or summary prospectus Please contact direction shares at<PHONE_NUMBER> The prospectus or summary prospectus should be read carefully before investing an investment in the funds is subject to risk Including the possible loss of principal the funds are designed to be utilized only by sophisticated investors such as traders and active investors distributor four-side fund services LLC TFNN has launched the Tigers then hosted at discord TFNN has been educating traders for more than 20 years with live programming hosted by a variety of professional traders during market hours The Tiger stand available to all Tigers and Tigris's for just one dollar for the year There's no catch or added costs when you join our community of traders sign up today and become a part of this Educational community of traders just visit the front page of TFNN.com This program is brought to you by Vista Gold traded on the NYSE American and TSX under the symbol VGZ Welcome back folks talking about my name is the Tim ord. We are talking markets out here and don't forget folks You can always get hold of Tim at odd dash oracle calm We have the now industrials right now down 390 Nasdaq's up 171 S&P's are up 57 So Tim do you want me go to the next shot here? Do you want to stay on this one? Well, it's up to you again any questions about it. No, no, I understand it I I think it's you know, I get it like it if we have a real sloppy market. They the intriguing thing here That's pretty much it. Yeah, no Actually, I sent over chart number five. Okay Did you get that one? If I have it we will no, I'm sure I'll have it and I can get it up for sure We'll get this up Yeah, I kind of did some stuff and I the other one was kind of confusing. I tried to that's all right Just give me just give me one second Well, Jacob will put it right inside The rest of this we'll go to let's do Let's do chat five one second Okay, I just sent him a text. He'll get that one up But why don't we go to then that want to go to four right now? We'll do we'll do three forward then by that time he'll have five up for us. All right One of your listeners emailed me and they wanted to the camera and actually he's got a good point His name is Hector out of California. Okay, cool. So but Anyhow the concert number four Free the blue the blue up for four four. Well, we can do five five is just slow Let me just see if he's got five up yet one second. Hold on. I don't have five yet And I can't what happens Tim is that I don't take emails on this and I just Oh, hold it. Hold it. Hold it one second. No, no, no, I know how to do this one second We when you sent this over this would have been let's say half hour hour ago No, I must have it one second Apologize for being no, no, don't worry man. I think I got this Okay, so You look similar. Oh, yeah. No, I can see that. I can see what you're looking at.  Let's just do another shot until then. All right because all right they'll get it up for us. Well, we do chart for okay and Chart for anyhow that the blue areas when both those indicators on the bottom or above minus 10 and The pink areas are when those two indicators are below minus 10 And why I want to point out. He actually got a good point. There's a gap on August I forgot what the camera there's a gap there You know the March I think it was March 13th Okay, I got a gap test. We're testing that gap today and that gap had 57 million shares I tested and came in at 2834 well, we get below that so we're actually testing that gap right now Yeah, now folks talking about the GDX now. We went from the S&P of the GDX, right? Yeah. Yeah, I'm sorry Yeah, this is a GDX. No, I can see that. Oh, right So, you know, we're testing that gap and what? Chart 5 will show which is definitely showing chart 4, but you see that double bottom back in March of This year double bottom on GDX. Yep So made about double bottom. Well, if you go down to those two indicators below it, you'll notice the first For the second bottom is higher than the first bottom on both those indicators, right? So that's a bullish divergence. Okay. Now I get top five time Tim. I got it So it's a start five. Okay. So now I got boxes around that You know, there's a red box around that March time frame And so I want to point out and I got that circled in gap right around around there We're running into that gap today What I want to make a point on is both both those bottom and two indicators Did a positive divergence in other words as the SP's were making a lower low Yeah, both those indicators are making higher lows, right? Well, if you also go go into the top in May Yeah, the May period the SM or the GDX made a double top that's right indicators that made lower tops, right? Okay, and now we take into the current time frame, which is the Red box far to the right. Yes, and the SP's are making Lower lows and both those indicators are still making higher highs. We're running into that gap and the gap had 57 million shares back on the March 13th. Yeah, so we're not going to hit 57 million shares today No, right now folks who have 14 right now that they that even the day prior to that we had 35 So there's no doubt now I can see that right. There's it they know they make the gold market hard men I mean because the gold contract also Tim the gold contract That's where I might take is that the gold contract is looking to go to this 1904 level and the 1904 level is actually the same day that that gap is at you know and the You know we hit 1927 today, but you know that strength when we came off that low is 1904 10 That's that I mean you know how they I mean it just what happens folks is that Gold you know goes higher and then it should on the way up and lower than it should in the way down So it's always interesting. You're exactly right.  I mean on this particular one down. Yeah, this these two indicators on the bottom You know never fell below They're fell below, you know that minus 10 area just recently, you know, so if and that's kind of unusual Usually this indicator those bottom those bottom two indicators usually get you out pretty close to the highs Okay, if you look, you know look on history. Yeah, and this one around, you know the market you got in were pretty close to the lows But it never got you out until pretty much for break even over here a couple weeks ago. Yeah, I just think if you notice You got in about oh Can't quite tell it's like about 29 and I got you out about 29 give or take And so it's kind of breaking normally that would get you out closer to Closer to the highs up around maybe 31. Yeah Didn't do it this time. It's kind of strange But you know indicators are indicators, but you still have a positive or burdens here really just so I'm still thinking right This market's still about ready to turn up. So They never said it was gonna be easy man Yeah, I never If it's easy, you're doing something wrong Wait, well listen man, it's always a pleasure You know It's there's no doubt. It's wild. We of course look forward to having you back on Thursday, Tim Hey, thanks a lot. Thanks so much and listen Tim. Listen folks You can get hold of Tim every trading day at odd dash oracle commas or D dash oracle dot com Say right there folks come right back. We have that out on 360 that has a cop 156 S&P's off 52 will come right back Are you ready to take your trading to the next level? Introducing Tom O'Brien's award-winning newsletter market insights your key to successful active trading Tom O'Brien renowned for his expertise in the financial markets has Designed market insights to be your daily guide to profitable trades Tom publishes his daily market insights newsletter every market day before the market open Along with updates when warranted stay ahead of the game with Tom's real-time analysis and trade recommendations delivered straight to your inbox Whether you're a seasoned trader or just starting out market insights provides the edge you need to navigate the markets with confidence Ready to join the ranks of successful traders head over to tfnn.com and subscribe to market insights today Don't miss out on this opportunity to supercharge your trading results Market insights comes with a 30-day money back guarantee for all new subscribers So you have nothing to risk don't miss out on this opportunity to revolutionize your trading game Head over to tfnn.com right now to join the thousands of traders who have already experienced the power of Tom O'Brien's award-winning newsletter market insights firsthand tfnn educating investors You might think that if you want to be successful at trading in the stock market You're going to need a crystal ball after all it's impossible to predict the future right like any endeavor in life Before you decide it's impossible get some advice from the experts You might find that it's not so impossible after all for daily market overviews that give you direction on the key indices Selective stocks and commodities Subscribe to the opening call newsletter at tfnn.com The opening call newsletter is written by Basil Chapman creator of the trading methodology known as the Chapman wave The Chapman wave up-down sequence gives you an edge in identifying price turns finding the peaks and valleys and stock prices Get the opening call newsletter by Basil Chapman in your inbox every day first time subscribers also get a 30-day money back guarantee If you're not satisfied, let us know and you'll get a full refund within 30 days of signing up tfnn.com educating investors Everything in the universe is governed by the Fibonacci sequence This mathematical principle is responsible for everything from the most aesthetically pleasing artwork to patterns in the stock market To stay on top of stock patterns You can take advantage of sign up for the Fibonacci 24-7 newsletter at tfnn.com When you subscribe you'll get a weekly report from veteran day trader Larry Pesavento on stocks You need to pay attention to and you can trust Larry's analysis after all He's got 45 years experience as a day trader Larry will also provide daily charts videos and data on the key markets That he's tracking expect notifications from Larry on market movement You need to act on at any time first time subscribers also get a 30-day money back guarantee If you're not satisfied, let us know and you'll get a full refund within 30 days of signing up Subscribe to the Fibonacci 24-7 newsletter today tfnn.com educating investors Don't forget you can listen to tfnn live on your mobile device 24 hours per day Go to tfnn.com then hit watch Tiger TV. That's tfnn.com then hit watch Tiger TV