bitdump / BLHeli

BLHeli for brushless ESC firmware
GNU General Public License v3.0
1.94k stars 1.09k forks source link

Tekko32 F3 4in1 (version B) Desync Bidirectional Dshot #464

Open MimNanopirate opened 4 years ago

MimNanopirate commented 4 years ago

Hi,

I have an issue with these ESC, when i am at low rpm and give full throttle the quad stop and drop it's falling out of the sky like it shuts off.

https://youtu.be/s030Vkzg6Bg

To Reproduce

Turn ON RPM filter (bidirectional Dshot) Whit no RPM filter is ok

Setup / Versions

issue with betaflight 4.1 et 4.2 BLheli 32.7

sskaug commented 4 years ago

There have been reports of some units of the Tekko32 F3 4in1 B ESC that resets when running 6S. You should contact your vendor about this.

etracer65 commented 4 years ago

@sskaug The Betaflight team is receiving lots of reports of bidirectional DSHOT telemetry errors when running DSHOT600 on these and other F3-based ESCs. The errors increase with RPM. Problem seems to be reduced when running DSHOT300.

Additionally there are many reports of intermittent protocol detection problems with the ESCs failing to initialize, or the initialization is delayed and out-of-sync between the motors. Seems to be related to F3-based ESCs (not one particular model/brand). Problem only seems to be related to inverted DSHOT detection.

Taken across all the reports it seems to be some generalized problem with inverted DSHOT handling on the F3-based ESCs. Disabling bidirectional DSHOT and using the normal non-inverted DSHOT seems to resolve the problems.

sskaug commented 4 years ago

@etracer65 Thanks for the input. We will try to understand what is is going on here.

hydra commented 4 years ago

This is probably related:

https://github.com/betaflight/betaflight/issues/9886#issuecomment-655085419

The ESC is sending telemetry responses too soon before the FC has had a chance to transition the GPIO pin to INPUT mode.

ChrisRosser commented 4 years ago

I have the exact same issue. On hard punchouts one or more motors (usually both front motors) would appear to desync and the quad would fall out of the sky. However, if I rearmed the quad after the crash only some of the motors would start spinning the others would remain still. Power cycling the quad would get all 4 motors spinning again until the next 'desync' event. In my experience a motor desync has never caused the ESC to refuse to spin the motor until being power cycled so this may be something new.

I found that behaviour significantly improved with timing set to auto, PWM to 48kHz (lowest possible for this ESC) and demag to high. I am using BF 4.2.0 with bidir DSHOT enabled.

I am happy to help test fixes for this issue.

etracer65 commented 4 years ago

@ChrisRosser Disable bidirectional DSHOT as a workaround for now.

hydra commented 4 years ago

@etracer65 There appears to be an issue with the FC not sending any DSHOT commands at all. See @jhartley 's comments here https://github.com/betaflight/betaflight/issues/9886#issuecomment-657829904

ChrisRosser commented 4 years ago

Issue still persists with 32.71 beta firmware for Tekko32 F3 4in1 B. It appears to be an issue with 96kHz PWM. No deathroll on 48kHz PWM frequency.

Potentially related is a loss of authority at zero throttle (lots of wobbles and bobbles) also seen at 96kHz PWM and not at 48kHz PWM.

ChrisRosser commented 4 years ago

@MimNanopirate I'm finding that I don't have a problem if I set the PWM to 48kHz. I hope this helps you too as we're running the same stack. No need to disable bidirectional dshot. You might also benefit from this test code: https://github.com/bitdump/BLHeli/tree/master/BLHeli_32%20ARM/Bidir%20Dshot%20F3%20testcode

bluehallu commented 4 years ago

I have the exact same issue @ChrisRosser describes with the same ESC. This behaviour of some motors not spinning at all after a rearm but fine after reboot is not something I've ever encountered or heard of before. Motor timing doesn't seem to affect it (Tried auto and 23, eventually happened on both) but 96khz definitely brings up this amongst other problems. On 96khz this is almost guaranteed to happen on the first punchout if not before, but aside from this the quad just flies terrible, lots of oscillations and loss of authority, even the motors make a strange noise.

I have contacted Holybro and received no reply. I find it very suspicious that this ESC has been pulled out of the market and a new version has been introduced with only one difference:

The PCB design uses a design in which the drive circuit and the control circuit are separated. This design broadens the overcurrent capability of the drive circuit, and at the same time reduces the electrical interference to the control circuit.

In my view, electrical interference doesn't manifest itself as a loss of performance but rather as a catastrophic failure like we're seeing. If Holybro is aware that the product had electrical interference problems they should recall it.

bluehallu commented 4 years ago

Had a few more flights. I noticed the issue is much more likely to occur when the battery is full. Trying to do a "punch to the moon" with a fully charged 6S is a reliable way to reproduce. Once the battery is down to 80% or lower it takes a lot of tries to bring out the issue. Can provide blackbox logs if it helps.

ChrisRosser commented 4 years ago

@bluehallu Thanks for reporting that you are having the issue too. I happen to have a just received a new tekko32 with separated control. I'll build it into a quad in the next fortnight and we can see if it does the same thing! I haven't had any issues on 48kHz PWM. Do you have any issues on 48kHz? It might be that 96KHz PWM on BLHELI_32 is still quite new and it needs to mature a little before its suitable for daily driving.

Do you have a problem if you disable bidirectional DShot? I haven't tried this myself but people have suggested it.

bluehallu commented 4 years ago

Yeah, as I said above I get problems even at 48khz. Holybro finally agreed to replace both ESCs (I hope with the new version) so I was quite happy to just be careful in the meantime but I just came back from the field and it was... bad. The ESC set itself in flames mid flight charring everything around it and puffing my battery... My advice to anyone with this ESC is to never run on it 6S or get it replaced.

ChrisRosser commented 4 years ago

@bluehallu Whoa! That escalated quickly! Sorry to hear that buddy. Were you running the 1000uF cap?

bluehallu commented 4 years ago

Yes I was

bluehallu commented 4 years ago

So, as I had two of these ESCs (I built two identical quads), I'm on holiday and while I wait for HolyBro to send me the new ones I thought I'd keep trying things with the other one so I spent the whole day at the field today. I tried demag on high, turning off bidirectional Dshot, dshot 300, and even swapped wires on reversed motors so that no motor had to be reversed in blheli.

None of this helped and it would still occasionally fall off the sky with the usual "motor doesn't turn back on until power cycle". When in this state and before power cycling, rebooting the FC doesn't help, trying to spin the motors from motor tab doesn't do anything and indeed Blheli32 app doesn't even detect the ESCs. I also noticed that sometimes more than one ESC would get in this state, and the ESCs this happened on seemed totally random. I saw it happen at least once in all 4.

Now the best part is that in the end after a full deflection yaw it fell from the sky again but this time it never recovered. I found it in the grass making a strange noise (video https://youtu.be/JRJi9tedTV4), and now after powering it either makes that noise after the initial startup tones or only some motors spin and others either don't move or the propeller just shakes but doesn't rotate.

ChrisRosser commented 4 years ago

@bluehallu So I have done some testing with the new version of the Tekko32 F3 and can confirm for me it behaves the same as the old version. Flies poorly on 96kHz with significant loss of authority at zero throttle and death rolls on punchouts. Flies better on 48kHz with some minor loss of authority after full throttle punch and chop, particularly with a full pack. I need to test with bidirectional dshot turned off.

@sskaug I hope this information helps with your investigation. Two different versions of the Tekko32 F3 board affected. Seems to be strongly related to PWM frequency and battery voltage with higher PWM and higher voltage being much more of a problem. I will test with BD DSHOT off and report back.

ChrisRosser commented 4 years ago

@bluehallu OK so I looked at your video and we are running almost IDENTICAL rigs. Same frame, Xing motors, stack, air unit. You seem to be having worse problems than me though so I want to help you get to where I am!

So, how are you mounting your capacitor? I have it mounted just behind the camera with two pieces of motor wire to connect to the battery pads, are you doing something similar?

I have 1700kV motors on 6S. Are you running similar kV? Are you using HV packs?

I'm running BF 4.2.0 filter sliders at 2.0, RPM filter on, dynamic notch set at 0 width percent, Q=250, Low 70Hz, High 350Hz. Everything else at defaults (incl. rates) do you run much higher rates?

bluehallu commented 4 years ago

@ChrisRosser I've tried default pids and filtering to no avail. Capacitor is mounted directly to the battery pads and held with TPU holder between standoffs. Motors are SmooX 2306/5 1800kv, packs aren't HV. If you're saying the new version has the same behaviour I'm bailing on Holybro. I've just bought a mamba F50 pro and won't ever be buying anything Holybro again, I guess I'll just sell the replacements as I presume they're good on 4S...

Bwsbmw commented 4 years ago

Does anyone else have the tekko32 f3 45amp newest revision with the extra + and - above the tekko32 logo. running tekko32_f3_C_32.7 firmware. I know that 32.7 is the latest stable release. If I go into flash, I see 32.7(sv) what is the (sv)? I know there has been issues with bidirectional dshot, which I intended to run, but am not sure its been addressed. I would like to run it, as I do on my 2 other Blheli32 quads, but not if I'm going to get desyncs. I will just keep bidirectional dshot off for now unfortunately.

hydra commented 4 years ago

@ChrisRosser Perhaps you can send your HolyBro ESC to @sskaug for investigation?

4712 commented 4 years ago

@Bwsbmw "32.7(sv)" simply means, that the hex file is not yet packed into the offline firmware resource, but will be downloaded while flashing.

Bwsbmw commented 4 years ago

Thank you, for that. So is the 32.72 hex have the corrections for the F3 and bidirectional dshot?

On Thu, Jul 23, 2020, 5:14 PM 4712 notifications@github.com wrote:

@Bwsbmw https://github.com/Bwsbmw "32.7(sv)" simply means, that the hex file is not yet packed into the offline firmware resource, but will be downloaded while flashing.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/bitdump/BLHeli/issues/464#issuecomment-663235657, or unsubscribe https://github.com/notifications/unsubscribe-auth/AIDVVI4TDB6GU5KWCYNB6BLR5CRZ5ANCNFSM4N7RXE6A .

ChrisRosser commented 4 years ago

@hydra Happy to arrange a tekko32 for @sskaug to look at. @sskaug how would it be best to get one to you?

sskaug commented 4 years ago

If you can email me at sskaug69 at gmail dot com, you can have my address

Bwsbmw commented 4 years ago

I have the exact same issue @ChrisRosser describes with the same ESC. This behaviour of some motors not spinning at all after a rearm but fine after reboot is not something I've ever encountered or heard of before. Motor timing doesn't seem to affect it (Tried auto and 23, eventually happened on both) but 96khz definitely brings up this amongst other problems. On 96khz this is almost guaranteed to happen on the first punchout if not before, but aside from this the quad just flies terrible, lots of oscillations and loss of authority, even the motors make a strange noise.

I have contacted Holybro and received no reply. I find it very suspicious that this ESC has been pulled out of the market and a new version has been introduced with only one difference:

The PCB design uses a design in which the drive circuit and the control circuit are separated. This design broadens the overcurrent capability of the drive circuit, and at the same time reduces the electrical interference to the control circuit.

In my view, electrical interference doesn't manifest itself as a loss of performance but rather as a catastrophic failure like we're seeing. If Holybro is aware that the product had electrical interference problems they should recall it.

I have the brand new revision tekko32_f3_C with the upgraded blah blah blah. I have yet to do anything but hover test in the front yard since I just finished it. Running 32.7.2 bidirectional dshot is off for now. I totally agree, I didn't read about this till after I had ordered it from Holybro. I have 17 more days to contact them if I habe any issues. Timing auto(default), ive set it to 48khz. I dont dare turn bidirectional dshot on yet. I will be doing a full flight tomorrow, and see what it's flying like. I will try bidirectional dshot after I know it's flying ok with it off.

sskaug commented 4 years ago

We have learned that there is a hardware issue with the B version of the Tekko F3. You can actually see this also from the second post here. There is a problem for 6S with some motors. So really there seems nothing we can do with FW or settings, and the proper way of handling it is to return the malfunctioning units to the vendor. Many units have been returned already.

hydra commented 4 years ago

@sskaug Do you know what the nature of the hardware problem is? I'm curious.

ChrisRosser commented 4 years ago

@Bwsbmw If you're running 4S you are unlikely to have any problems. If you are running 6S I would suggest sticking to 48kHz PWM for daily driving. I found the RevC still had issues at 96kHz on 6S with Bidrectional DSHOT on. I haven't actually done any testing without bidirectional DSHOT on to see if that makes any difference. I would be interested to hear if you have weird flight behaviour on 96kHz with bidirectional dshot off?

sskaug commented 4 years ago

@hydra. I do not know specifically in this case. But PCB design for ESCs is challenging - during acceleration situations like punchouts or roll stops, motor currents can reach hundreds of amps. Per ESC channel! Such huge current flows in the ground plane can cause disturbances to ESC signals - bemf sensing signals, MCU to driver signals, etc.

ChrisRosser commented 4 years ago

@Hydra @sskaug My understanding is that higher PWM frequencies create more electromagnetic interference (EMI) (it increases with switching frequency) as do higher voltages (due to higher inrush currents etc.). It seems like a fully charged 6S pack going from 0 to 100% throttle instantly @96kHz PWM is a perfect storm for EMI. I imagine this overwhelms some part of the motor control circuit and renders it unable to commutate the motor correctly causing the quad to fall out of the sky. In the new RevC design the control electronics has been moved onto a separate board with what looks like a ground plane in between. This should attenuate electromagnetic interference significantly and protect the control electronics. They've also upgraded the BEC, presumably to guarantee a stable supply voltage to the control circuit even during extremely challenging battery voltage conditions.

Bwsbmw commented 4 years ago

Chris, no I havent had any issue with Bidirectional Dshot off and 48khz, but I had set it to 48khz and have not flown it on 96khz yet. I'm going tomorrow morning, if I try 96khz dshot off on 4s, what should I look out for? Also I would love to try bidirectional Dshot on, and 48khz since the esc is already set their, if you don't think their will be any issues on 4s, rcinpower smoox 2306.5-2580kv. Really would like the rpm filtering. I can try 96khz, bidirectional off, I just really dont want to have a desync. Its flys solid dshot600, 32.7.2 default, timing auto(default), only the 96 to 48khz I changed.

On Tue, Jul 28, 2020, 3:56 AM ChrisRosser notifications@github.com wrote:

@Bwsbmw https://github.com/Bwsbmw If you're running 4S you are unlikely to have any problems. If you are running 6S I would suggest sticking to 48kHz PWM. I found the RevC still had issues at 96kHz on 6S.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/bitdump/BLHeli/issues/464#issuecomment-664841199, or unsubscribe https://github.com/notifications/unsubscribe-auth/AIDVVIZ4Z27MNJOZHFZEDB3R52ACXANCNFSM4N7RXE6A .

ChrisRosser commented 4 years ago

@Bwsbmw I think you should be fine on 4S to try 96kHz. Look for wobbles and bobbles when chopping the throttle. Then punch out from 0 - 100% throttle. Be ready to disarm if the quad desyncs. Do this low to the ground over soft ground (long grass) so that if a desync happens the quad has a soft landing. You should definitely have rpm filter on if you can it really helps reduce motor noise in the gyro.

Bwsbmw commented 4 years ago

@Bwsbmw I think you should be fine on 4S to try 96kHz. Look for wobbles and bobbles when chopping the throttle. Then punch out from 0 - 100% throttle. Be ready to disarm if the quad desyncs. Do this low to the ground over soft ground (long grass) so that if a desync happens the quad has a soft landing. You should definitely have rpm filter on if you can it really helps reduce motor noise in the gyro.

I was able to fly bidirectional Dshot today, 4s on the Tekko32 F3 rev C. Rpm showed 0.00% error on all 4 motors pre flight. It flew fine on 48khz, 32.7.2 doing multiple punchouts, then to quick snap rolls, opposite back to back. I was unable to test 96khz today as I forgot a otg cable. Only thing that was odd was esc temp that is displayed in the OSD was stable say 100F the other day with bidirectional off. Turn on bidirectional dshot, and the numbers jump around fast, numbers between 70, and the real temp I assume 100F. It went up to 2XX for a split second a few times. I dont know of that would activate the 140c protection in blheli32suite. Their was one 0-100 punch out were motor noise on HD footage seamed to raise, flatten for a split second, then raise quickly again to full. I dont have a log of that event, I was not going straight up. I was swooping down then going back up. I checked my dvr and I was at 100% throttle. Didnt hear it any on other punch out, or any of the other 4 flights. Thing I really noticed so far was the erroneous esc temp jumping around on OSD with bidirectional dshot on. Motor noise was much better, most on a log was 201hz on pitch Gyro_Scaled, logs looked much better on default pids and filters BF 4.2 kakutef7miniv2, dshot600, 8k8k, 5.5 %idle.

ChrisRosser commented 4 years ago

@Bwsbmw Glad to hear it all went well! There is a potentially related issue here: #465 I would suggest disabling ESC telemetry while running bidirectional DSHOT to reduce load on the ESC MCU and therefore reduce the likelihood of late packets. Is there any critical information you need from ESC telemetry?

Bwsbmw commented 4 years ago

@Bwsbmw Glad to hear it all went well! There is a potentially related issue here: #465 I would suggest disabling ESC telemetry while running bidirectional DSHOT to reduce load on the ESC MCU and therefore reduce the likelihood of late packets. Is there any critical information you need from ESC telemetry?

Hey Chris, To be 100% honest, no, I'll dont use esc telemetry for anything. Well unless it's has to be on for bidirectional dshot to work, but im pretty sure it doesnt. I was just monitor the esc temp on the first flights. i know it runs at about 105F on a hot day now, so no need for it. The esc sends current data adc anyways, so that's the only info I use from the ESC I use is for Mah consumed. To turn off telemetry, are you reffering to under the ESC/Motor Features, on the configuration page of BF, that says ESC_SENSOR (uses KISS/Blheli32 telemetry over a seperate wire)? Im asumming thats what you may be refering to, because it is on. There's also the Telemetry under other features further down but thats different, not for the esc. Thats for my crossfire I believe. As of right now, the only thing I monitor from the esc is current consumption via adc. So telemetry can be turned off. Thanks for the recommendations.

ChrisRosser commented 4 years ago

@Bwsbmw You are correct. ESC_SENSOR (uses KISS/Blheli32 telemetry over a seperate wire) is what you need to turn off. Happy flying!

Bwsbmw commented 4 years ago

@Bwsbmw You are correct. ESC_SENSOR (uses KISS/Blheli32 telemetry over a seperate wire) is what you need to turn off. Happy flying!

Thank you, you as well. I just have a kinda quick question thats been in the back of my head.. This specific quad ive been refering to, dshot_burst=off(default)Kakutef7mini 4.2 target. Stays off after bidirectional dshot is enabled. My other 2 quads with rpm filter dshot_burst=on(default)omnibusf4sd target 4.2, and matek405ctr also burst=on(default)4.2 Never changed anything besides turn bidshot on. What does that even do, and should it be on, off, or doesnt matter? If you don't mind me asking? I dont plan on touching anything, as all 3 are flying with rpm filtering enabled. Just interested, as I dont know. Thanks again.

ChrisRosser commented 4 years ago

@Bwsbmw My understanding is that dshot_burst has to do with whether dshot is using burst DMA or normal DMA on the STM32. It's board specific and won't make a difference to flight performance. Leave it at default.

MimNanopirate commented 4 years ago

Holybro recognized the issue with bidirectional Dshot. They propose me to change the ESC. Do you know if they really fixed the problem with a new version ? I wouldn't like to end up with the same ESC 😆

Bwsbmw commented 4 years ago

I'm running the new version 30x30 on 4s, and am not having any issues. Although I have not tried 96khz, I changed it to 48khz when I upgraded the tekko32 f3 45amp rev C ESC to 32.7.2 and its flying beautiful. You will know its the new version, it will have a extra + and - on the top side if the board under the current sensor. You can use it for an extra cap, or wire a vtx that takes battery voltage which is what I did. The pictures of the new esc are on the Holybro website. I'm sorry I cannot speak for 6s, as I dont run 6s. Which is where I think the problem likes to show itself. It's not believed to be esc specific, but F3 related. This version seams to work, ive got over 16packs threw it, and no desyncs. On 4s.

MimNanopirate commented 4 years ago

Ok thank you, cross fingers for 6s, someone tested 6s ?

ChrisRosser commented 4 years ago

@MimNanopirate Running 6S on the new version C board @ 48kHz and its fine! Make sure you use the included Cap on the ESC battery pads. Happy flying!

MimNanopirate commented 4 years ago

Good news, thank you !

Bwsbmw commented 4 years ago

Good news, thank you !

I forgot to mention, you may want to check the 4in1 connector. When mine came, and I checked the connector with a uv light. Sure enough pins were also oversprayed with the conformal coating they use. Dont know how much this would really effect it, if any but I figured id clean it off for a guaranteed good connection. 99% isopropyl or 91% Its a very light coating, but If you do it, be very very careful of the pins.

rgmorales commented 4 years ago

Is there are chance this issue is being resolved any time soon? Lots of issues on F3 ESC, I had the same issues with a Tekko32, but it does not work even with 48kHz. I do not want to disable DSHOT...

Thanks!

SnowLeopardFPV commented 4 years ago

I would also like to know if we should be sending our Tekko32 4in1 ESCs back for a refund or holding out for some kind of firmware fix. I have one of the latest revision Tekko32F3 Metal 4in1 65A ESCs (the one HERE) which isn't yet soldered into my quad but after reading this, fitting it to my brand new build doesn't exactly fill me with confidence.

It's not clear if my ESC is affected by this issue (it's running the TEKKO32_F3_4in1_B BLHeli32 ESC layout firmware), but I need to decide soon if I should use a different non-F3 based ESC on my build or just wait for a confirmed and tested fix which eliminates all of the issues we are seeing reported here.

Does anyone have any further news?

Bwsbmw commented 4 years ago

I am running the Latest Tekko32 45amp f3 rev C, 32.7.2, no issues with bidirectional dshot on 48khz 4s. I am not sure of the 65amp version, I've only been able to confirm its working on the rev C.

On Tue, Aug 11, 2020, 6:13 PM SnowLeopardFPV notifications@github.com wrote:

I would also like to know if we should be sending our Tekko32 4in1 ESCs back for a refund or holding out for some kind of firmware fix. I have one of the latest revision Tekko32F3 Metal 4in1 65A ESCs (the one HERE http://www.holybro.com/product/tekko32f3-metal-4in1-esc65a) which isn't yet soldered into my quad but after reading this, fitting it to my brand new build doesn't exactly fill me with confidence.

It's not clear if my ESC is affected by this issue (it's running the TEKKO32_F3-4in1_B BLHeli32 ESC layout firmware), but I need to decide soon if I should use a different non-F3 based ESC on my build or just wait for a confirmed and tested fix which eliminates all of the issues we are seeing reported here.

Does anyone have any further news?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/bitdump/BLHeli/issues/464#issuecomment-672311796, or unsubscribe https://github.com/notifications/unsubscribe-auth/AIDVVI3TX6B7VE2KSHJF2TDSAG7ANANCNFSM4N7RXE6A .

SnowLeopardFPV commented 4 years ago

Does anyone know how we tell what revision of board we have? I don't see a revision number stated anywhere on my Tekko32F3 Metal 4in1 65A ESC board. Does the "_B" at the end of the firmware layout name on mine indicate the revision (TEKKO32_F3-4in1_B)?

Mine will also be running on 6S which worries me even more because from what I'm reading, the issues seem to be more prevalent on 6S compared to 4S.

ChrisRosser commented 4 years ago

I would also like to know if we should be sending our Tekko32 4in1 ESCs back for a refund or holding out for some kind of firmware fix. I have one of the latest revision Tekko32F3 Metal 4in1 65A ESCs (the one HERE) which isn't yet soldered into my quad but after reading this, fitting it to my brand new build doesn't exactly fill me with confidence.

It's not clear if my ESC is affected by this issue (it's running the TEKKO32_F3_4in1_B BLHeli32 ESC layout firmware), but I need to decide soon if I should use a different non-F3 based ESC on my build or just wait for a confirmed and tested fix which eliminates all of the issues we are seeing reported here.

Does anyone have any further news?

@snowleopardFPV, looking at the photo you sent can you confirm you have an ESC with a separate board on the back? (a board on board design)

The board on board design of the new ESCs reduces interference and seems to prevent the falling out of the sky behaviour seen with the older single board version of the tekko32.

If you have board on board I would be confident in saying you are ay-OK. If you DO NOT have board on board you should get a replacement new version with board on board before running 6S.

Don't worry about F3 so much. Just use 32.7.2!