Dell S5212F-ON - Alternative OS SONiC Setup Guide - 25gbe / 100gbe on a budget

Background

There was an absolute flood of -ON suffix 100gbe Dell switches in November of '21 – I got, at the time, a really good deal on this switch – less than $1200. I was really hoping you could get 25gbe switches for < $100 per port by now!

In the time since then it has been near impossible to buy this switch at this price. Part of the reason the switch was so cheap is that it was supposed to be ONIE compatible but it had weird compatibility issues – mostly down to rough edges around the Broadcom SDK. As a result it would only work with Dell’s OS10 OS (and that was/still is wildly expensive, for what it is).

There are several vendors who used to sell third party OSes for these switches (which is AWESOME).

Unfortunately, Nvidia bought Cumulus Linux, which also caused Broadcom to pull t heir licenses for the software SDK for the chipset. Cumulus had been a kind of Freemium… but the enthusiasm for it has died after the NV acquisition.

Worse, the S5212F-ON isn’t really Dell OS9 compatible (which doesn’t require a license) and, worse still, OS10 will only work on these for 3 days at a time. After which the switch reboots.

Unless you have Dell OS10 version 10.2.2E. If you can find it, has a bug (feature?) where it complains about a missing license, but doesn’t actually reboot every 72 hours.

Most of the time OS10 WILL reboot after 72 hours though.

Thanks to enterprises with this hardware experiencing this crippling 72-hour idiocy, non-Dell operating systems for this hardware have been advancing the last couple of years. (Dell realized this was dumb and for some -ON switches they do actually now give you a free OS10 license, but the ones I have were scrapped from a datacenter that didn’t have time to deal with this shenanigans and instead went with different Open Compute hardware. And won’t be buying Dell for that kind of equipment again…that all happened in 2019 though…)

Enter SONiC – an alternative OS… for your switch?! I want to show you the SONiC operating system which is easy to setup, and fully open source.

https://sonicfoundation.dev/

Where do I download OS10?

That’s the neat part, you don’t! Don’t need that garbage. Stop it. :slight_smile:

Initial Setup of Sonic - Start with Dell S5212F-ON firmware

It is helpful to read over the SONiC Quick Start before beginning.

Even before doing anything in that document, understand that (as a best-practice) you should be able to download some platform updates from Dell. These are the updates NOT stored in your “digital locker.”

I would recommend using a serial console cable. I used serial setings of 115200 with my cable.

Think of the switch as a computer with a bios and firmware. The “switch” part is basically an add-in peripheral (Broadcom) controlled by the computer. ONIE is sort of the platform firmware/bios/out of band management stuff and SONiC as the OS.

There is, unfortunately, more crippling idiocy from Dell. This time unintentional – their web downloader seems to hide the file you need behind a PDF link.

Here’s a PDF! “Other Formats” is actually the firmware…

Yes, Dell, the “other format” of the PDF I need is actually the firmware. Perfect Sense!

Once you have the zip file, unzip it and follow the instructions in the Dell PDF to update your switch. It was necessary for me to apply the update twice because the ONIE firmware was so old that it did not cleanly apply the first time. It seemed to update the BMC, BIOS and FPGA firmware in different steps. There are commands in Dell’s PDF for examining the firmware version from the “Linux” environment as well as the Evaluation version of Dell OS10 likely installed on your switch.

The default OS10 credentials if you need them is admin/admin for the switch OS and linuxadmin/linuxadmin for the Linux shell user. If you login as the Linux shell user it’ll ask you to change the password, and you must enter the linuxadmin password a second time. Otherwise you get a token manipulation error).

With Dell’s stuff fully updated, it is now possible to properly install SONiC and ditch OS10.

Download the SONiC bin for Broadcom; install on your Dell S5212F-ON

Again, I did this via the serial console and with a USB stick. It is possible to do this remotely and via tftp downlodas but… this is more reliable. Unless you have more than 10 of these to do, I’d probably not bother with anything more complex than via serial port. If these had been used previously it is possible that they are in a weird state internally and you’d want to notice that as you (effectively) reimage them anyway.

For the Dell S5212F-ON, you can download the broadcom SONiC Bin file and copy it to a USB drive. I found the USB installation the fastest/safest method. It does take a while.

  GNU GRUB  version 2.02~beta2+e4a1fe391
 +----------------------------------------------------------------------------+
 |*ONIE: Install OS                                                           | 
 | ONIE: Rescue                                                               |
 | ONIE: Uninstall OS  <---- Uninstall                                        |
 | ONIE: Update ONIE                                                          |
 | ONIE: Embed ONIE                                                           |
 +----------------------------------------------------------------------------+

Start by uninstalling OS10, reboot then select Install OS.

this will dump you to a linux terminal.

From here you can use the onie-os-install script –

mkdir /mnt/media 
mount /dev/sdb1 /mnt/media
onie-os-instlal /mnt/media/sonic-broadcom-filename.bin

Don’t blindly copy paste! The commands will be something like that to make a directory, mount your usb and the install the sonic OS.

TODO screenshots?

That’ll take a bit, and then it will be possible to login and configure SONIC.

Setting Up Sonic

The default SONiC Password is admin/YourPaSsWoRd (yes, really).

Linux sonic 5.10.0-18-2-amd64 #1 SMP Debian 5.10.140-1 (2022-09-02) x86_64
You are on
  ____   ___  _   _ _  ____
 / ___| / _ \| \ | (_)/ ___|
 \___ \| | | |  \| | | |
  ___) | |_| | |\  | | |___
 |____/ \___/|_| \_|_|\____|

-- Software for Open Networking in the Cloud --

Unauthorized access and/or use are prohibited.
All access and/or use are subject to monitoring.

Help:    https://sonic-net.github.io/SONiC/

Last login: Tue Jun 27 09:57:07 UTC 2023 on ttyS0

NICE. hacker noises You’re in.

Sonic out of the box comes in “router mode” – so each interface gets an IP and it is setup for IP Routing. Not super handy if you want it to be a “simple” switch!

I’m not sure why but most commands require sudo, even just show commands, which is contrary to SONiC documentation.

admin@sonic:~$ show interface status
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/dist-packages/sonic_eeprom/eeprom_base.py", line 244, in read_eeprom_bytes
    F = self.open_eeprom()
  File "/usr/local/lib/python3.9/dist-packages/sonic_eeprom/eeprom_base.py", line 232, in open_eeprom
    return io.open(eeprom_file, "rb")
PermissionError: [Errno 13] Permission denied: '/sys/class/i2c-adapter/i2c-0/0-0050/eeprom'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/dist-packages/sonic_platform/eeprom.py", line 34, in __init__
    self.eeprom_data = self.read_eeprom()
  File "/usr/local/lib/python3.9/dist-packages/sonic_eeprom/eeprom_tlvinfo.py", line 258, in read_eeprom
    h = self.read_eeprom_bytes(self._TLV_INFO_HDR_LEN)
  File "/usr/local/lib/python3.9/dist-packages/sonic_eeprom/eeprom_base.py", line 267, in read_eeprom_bytes
    raise IOError("Failed to read eeprom : %s" % (str(e)))
OSError: Failed to read eeprom : [Errno 13] Permission denied: '/sys/class/i2c-adapter/i2c-0/0-0050/eeprom'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/intfutil", line 836, in <module>
    main()
  File "/usr/local/bin/intfutil", line 819, in main
    interface_stat.display_intf_status()
  File "/usr/local/bin/intfutil", line 448, in display_intf_status
    self.get_intf_status()
  File "/usr/local/lib/python3.9/dist-packages/utilities_common/multi_asic.py", line 157, in wrapped_run_on_all_asics
    func(self,  *args, **kwargs)
  File "/usr/local/bin/intfutil", line 535, in get_intf_status
    self.table += self.generate_intf_status()
  File "/usr/local/bin/intfutil", line 479, in generate_intf_status
    port_oper_speed_get(self.db, key),
  File "/usr/local/bin/intfutil", line 202, in port_oper_speed_get
    return appl_db_port_status_get(db, intf_name, PORT_SPEED)
  File "/usr/local/bin/intfutil", line 167, in appl_db_port_status_get
    optics_type = port_optics_get(appl_db, intf_name, PORT_OPTICS_TYPE)
  File "/usr/local/bin/intfutil", line 224, in port_optics_get
    if is_rj45_port(intf_name):
  File "/usr/local/lib/python3.9/dist-packages/utilities_common/platform_sfputil_helper.py", line 120, in is_rj45_port
    platform_chassis = sonic_platform.platform.Platform().get_chassis()
  File "/usr/local/lib/python3.9/dist-packages/sonic_platform/platform.py", line 24, in __init__
    self._chassis = Chassis()
  File "/usr/local/lib/python3.9/dist-packages/sonic_platform/chassis.py", line 102, in __init__
    self._eeprom = Eeprom()
  File "/usr/local/lib/python3.9/dist-packages/sonic_platform/eeprom.py", line 37, in __init__
    raise RuntimeError("Eeprom is not Programmed")
RuntimeError: Eeprom is not Programmed

Fortunately sudo show interface status works just fine.

 sudo show interface status
eeprom'onic:~$ During handling of the above exception, another exception occurred:
  Interface        Lanes    Speed    MTU    FEC               Alias    Vlan    Oper    Admin             Type    Asym PFC
-----------  -----------  -------  -----  -----  ------------------  ------  ------  -------  ---------------  ----------
  Ethernet0           29      25G   9100    N/A   twentyfiveGigE1/1   trunk    down       up              N/A         N/A
  Ethernet1           30      25G   9100    N/A   twentyfiveGigE1/2   trunk    down       up              N/A         N/A
  Ethernet2           31      25G   9100    N/A   twentyfiveGigE1/3   trunk    down       up              N/A         N/A
  Ethernet3           32      25G   9100    N/A   twentyfiveGigE1/4  routed    down       up              N/A         N/A
  Ethernet4           33      25G   9100    N/A   twentyfiveGigE1/5  routed    down       up              N/A         N/A
  Ethernet5           34      25G   9100    N/A   twentyfiveGigE1/6  routed    down       up   SFP/SFP+/SFP28         N/A
  Ethernet6           35      25G   9100    N/A   twentyfiveGigE1/7  routed    down       up              N/A         N/A
  Ethernet7           36      25G   9100    N/A   twentyfiveGigE1/8  routed    down       up              N/A         N/A
  Ethernet8           37      25G   9100    N/A   twentyfiveGigE1/9  routed    down       up              N/A         N/A
  Ethernet9           38      25G   9100    N/A  twentyfiveGigE1/10  routed    down       up              N/A         N/A
 Ethernet10           39      25G   9100    N/A  twentyfiveGigE1/11  routed    down       up              N/A         N/A
 Ethernet11           40      25G   9100    N/A  twentyfiveGigE1/12  routed    down       up              N/A         N/A
 Ethernet12  41,42,43,44     100G   9100    N/A     hundredGigE1/13   trunk      up       up  QSFP28 or later         N/A
 Ethernet16  45,46,47,48     100G   9100    N/A     hundredGigE1/14   trunk    down       up              N/A         N/A
 Ethernet20  49,50,51,52     100G   9100     rs     hundredGigE1/15   trunk      up       up              N/A         N/A


In this screenshot I have reconfigured some ports for trunking and left some of the 25g ports as routed. Unlike with Dell OS10 there is no monkeying with enabling unsupported transceivers.

Troubleshooting

Not everything is always roses, though. Mellanox ConnectX-4 NICs, for example, expect RS style forward error correction and those won’t link up through this switch by default. The fix is easy, however:

sudo config interface fec Ethernet20 rs

This should allow the connectx-4 clients to link up on one of the 100gbe ports.

vtysh

This command will give you a shell that is less like a linux shell and more like a traditional switch shell. Understand that the interface numbering can be configured to be more linux-like OR more traditional switch like. Much of the documentation you might encounter online can be using one or the other convention and it might seem mysterious that this thing you’ve searched for doesn’t work… if you understand the ports can be referred to by different names, depending on the mode of the switch, then it makes a little more sense.

I Just Want A Dumb Switch That Goes Fast

Okay, I gotchu fam.


# take ports out of their default routing mode 
  sudo config interface ip remove Ethernet0 10.0.0.0/31
  sudo config interface ip remove Ethernet1 10.0.0.2/31
  sudo config interface ip remove Ethernet2 10.0.0.4/31
  sudo config interface ip remove Ethernet3 10.0.0.6/31
  sudo config interface ip remove Ethernet4 10.0.0.8/31
  sudo config interface ip remove Ethernet5 10.0.0.10/31
  sudo config interface ip remove Ethernet6 10.0.0.12/31
  sudo config interface ip remove Ethernet7 10.0.0.14/31
  sudo config interface ip remove Ethernet8 10.0.0.16/31
  sudo config interface ip remove Ethernet9 10.0.0.18/31
  sudo config interface ip remove Ethernet10 10.0.0.20/31
  sudo config interface ip remove Ethernet11 10.0.0.22/31
# now the 100gbe ports. note you can run these as 4x 25gbe ports instead if you want... thats why the gaps in the numbers 
  sudo config interface ip remove Ethernet12 10.0.0.24/31
  sudo config interface ip remove Ethernet16 10.0.0.26/31
  sudo config interface ip remove Ethernet20 10.0.0.28/31


 # create aribtrary vlan 10, then trunk all the ports to it 
   sudo config vlan add 10
   sudo config vlan member add -u 10 Ethernet0
   sudo config vlan member add -u 10 Ethernet0
   sudo config vlan member add -u 10 Ethernet1
   sudo config vlan member add -u 10 Ethernet2
   sudo config vlan member add -u 10 Ethernet3
   sudo config vlan member add -u 10 Ethernet4
   sudo config vlan member add -u 10 Ethernet5
   sudo config vlan member add -u 10 Ethernet6
   sudo config vlan member add -u 10 Ethernet7
   sudo config vlan member add -u 10 Ethernet8
   sudo config vlan member add -u 10 Ethernet9
   sudo config vlan member add -u 10 Ethernet10
   sudo config vlan member add -u 10 Ethernet11
   sudo config vlan member add -u 10 Ethernet12
   sudo config vlan member add -u 10 Ethernet16
   sudo config vlan member add -u 10 Ethernet20

… and now we have a normal switch! Save that config.

sudo config save -y

Note also the default MTU here is 9100 and you may want to make other changes to this to suit your setup.

Other handy commands:

 show ip interfaces
Interface    Master    IPv4 address/mask    Admin/Oper    BGP Neighbor    Neighbor IP
-----------  --------  -------------------  ------------  --------------  -------------
Ethernet3              10.0.0.6/31          up/down       ARISTA04T2      10.0.0.7
Ethernet4              10.0.0.8/31          up/down       ARISTA05T2      10.0.0.9
Ethernet5              10.0.0.10/31         up/down       ARISTA06T2      10.0.0.11
Ethernet6              10.0.0.12/31         up/down       ARISTA07T2      10.0.0.13
Ethernet7              10.0.0.14/31         up/down       ARISTA01T0      10.0.0.15
Ethernet8              10.0.0.16/31         up/down       ARISTA02T0      10.0.0.17
Ethernet9              10.0.0.18/31         up/down       ARISTA03T0      10.0.0.19
Ethernet10             10.0.0.20/31         up/down       ARISTA04T0      10.0.0.21
Ethernet11             10.0.0.22/31         up/down       ARISTA05T0      10.0.0.23
Loopback0              10.1.0.1/32          up/up         N/A             N/A
docker0                240.127.1.1/24       up/down       N/A             N/A
lo                     127.0.0.1/16         up/up         N/A             N/A

This thing has docker?!? How do you think it does what it does :wink: ?

 docker ps
CONTAINER ID   IMAGE                                COMMAND                  CREATED        STATUS        PORTS     NAMES
e52bd5c08eef   docker-snmp:latest                   "/usr/local/bin/supe…"   13 hours ago   Up 13 hours             snmp
831c00b6686e   docker-sonic-mgmt-framework:latest   "/usr/local/bin/supe…"   13 hours ago   Up 13 hours             mgmt-framework
6564f7dd311c   docker-lldp:latest                   "/usr/bin/docker-lld…"   13 hours ago   Up 13 hours             lldp
4c880b36dcb6   docker-platform-monitor:latest       "/usr/bin/docker_ini…"   13 hours ago   Up 13 hours             pmon
2a8ed2f4c57f   docker-fpm-frr:latest                "/usr/bin/docker_ini…"   13 hours ago   Up 13 hours             bgp
70e6a4e94141   docker-router-advertiser:latest      "/usr/bin/docker-ini…"   13 hours ago   Up 13 hours             radv
82f2cc7c075b   docker-syncd-brcm:latest             "/usr/local/bin/supe…"   13 hours ago   Up 13 hours             syncd
4b452f7f5101   docker-teamd:latest                  "/usr/local/bin/supe…"   13 hours ago   Up 13 hours             teamd
e5a550a022e8   docker-orchagent:latest              "/usr/bin/docker-ini…"   13 hours ago   Up 13 hours             swss
d5f32ec18136   docker-eventd:latest                 "/usr/local/bin/supe…"   13 hours ago   Up 13 hours             eventd
6fc6f47580ef   docker-database:latest               "/usr/local/bin/dock…"   13 hours ago   Up 13 hours             database

… that can also be a source of things that need troubleshooting, though.

Fin

image

It’s nice to enjoy 25 gigabit from a gaggle of windows computers with basically zero headache. And the linux-based file server can easily saturate 100gbe if enough clients are busy. Since it’s built with a giant mountant of optane!!!11!! Soon ™

6 Likes

I mean of course it is, that’s just would you do. It’s tomahawk chipset is just blazing fast at routing, why would you use it for anything else?

On a different note: does anyone here have some real experience with SONiC? I have tired it on a 100G Mellanox switch and it was totally unusable. We have tried like 5 different versions and every single one has weird, annoying bugs that are dealbreaker for us. But mostly we had problems with routes not being offloaded to the ASIC. They would always be only in the Linux kernel. Nvidia/Mellanox they don’t have a special build they just tell you to get the lastest from the build pipeline. Is that a strategy for their customers to sell them on cumulus??

But even with all of these problems I really liked it. Is there any switch that does work well with it? We’d need proper BGP (EVPN) support, though, but that should be pretty standard.

Bgp was working on the s5212. It seems like a lot of the magic is handled via docker … are the routes being applied in the container? Not sure what you’re trying to do but it might work on the dell. Which might give you a clue to the other system

Could you post a download link for the bin file. I terrible messed my switch by clicking install OS and it erased my Sonic Installation, which came with the switch.

Ah okay. It wasn’t a problem with frr for us. The docker container started and exchanged routes with its neighbors, but the routes that it got back will be put in the Linux kernel and then synced back / offloaded into the ASIC. That part was very troublesome and just did not work right (on that switch at least). I really like the architecture of SONiC, but some other containers didn’t work either and never came up. Didn’t remember what it was, but it was pretty sad… We went back to Cumulus for the time being…

The SONiC Quick Start Guide wendell linked has the download links for the Open Source SONiC images up top in its Download Image section.

This is the list:

You will want to choose the one for your platform and bootloader in the case of the aforementioned Dell Switch the latter is ONIE which i presume the -ON suffix is meant to denote and more specifically entry #49 says its for Dell S5212F.

Maybe interesting to some there is an ansible collection from Dell that i am using - albeit on a non-opensource Broadcom Enterprise SONiC version - that can be used for configuring the switch via either the SONiC http API or ssh.

Documentation: Dellemc.Enterprise_Sonic — Ansible Documentation
Github Code: GitHub - ansible-collections/dellemc.enterprise_sonic: Ansible Network Collection for Enterprise SONiC Distribution by Dell Technologies

I should mention that when configuring later SONiC versions with ansible you should use the klish cli ( https://github.com/sonic-net/SONiC/blob/master/doc/mgmt/Management%20Framework.md#3221-cli ) accessible via the command sonic-cli for any additional changes as it shares code with the http REST API at least thats what the Broadcom Design Guide for their latest SONiC version is suggesting.

1 Like

Thank U very match!
Exactly the page I was looking for. I’ll try to get an enterprise flavor of Dell Sonic once I find my order number :smile:

Regards

I’ve been playing with Sonic on real hardware (Dell 5248) for the past two weeks, after trying it first on GNS3, and the experience with the community version is absolutely horrible.

  1. All the lovely tutorials in both text and video on the web use sonic-cli commands. These aren’t available in the community version.
  2. Due to the absense of sonic-cli you have to configure the switch from config_DB or a combination of Config_DB and vtysh/frr. For both the unified config and the splitted version you have to add a specific line in your config_DB file. Which you only find by accident on the third page of Google results while searching for something else.
    “frr_mgmt_framework_config”: “true”,
    “docker_routing_config_mode”: “split”,
  3. Missing documentation from the source. Yes, Github is full of documentation, but does it still apply to the version you are using? You will find out when several docker containers fail to start without any notification.
  4. What version do I need to download? There are several builds and the latest master is probably broken anyway, but al these other versions have several builds per day and they are not all succesfull. Anyway, the Github page (the one with the hardware support list) links to the latest build of each version and that one might also be broken.
  5. Bugs are intermittent. The ones I have found date back to 2019, but the suggested solution (which works) isn’t implemented in the later versions. Or i’ve managed to only download specific builds where they weren’t implemented…
    (I want to post a link here but i’m not allowed)
  6. Added functions aren’t fully completed. For example, BGP sessions require a policy to function(which is good for real world usage) but the command to disable this policy or to create this policy isn’t implemented in the community version. You have to create this from scratch in config_DB without any examples (so far I could find) and the documentation isn’t very clear about the way you use :{}[] or | and , to create this policy table.

I’ve exporterd (show running all) my working GNS3 config_DB configuration to the real hardware, but still some dockers (teamd/frr) are failing when the stars are not aligned correctly. Maybe the Ansible method of configuring the things is the solution, otherwise its off to Broadcom/Dell for the enterprise version. The evaluation version of them just works.

1 Like

Thanks for sharing! I had exactly the same experience… Glad to know that the closed source versions from Broadcom and Dell work, though! It’s a shame that they let their oss version in such a bad state. I’m totally fine with features not being implemented or exposed with the cli, but I would definately expect everything that is implemented to work right in all the builds. But the images they provide are russish roulette…

1 Like

You said you wanted proper EVPN support. For evpn/vxlan to work on Broadcom systems you need to add specific configuration lines in the hardware profile file. (issue #8371)

Blockquote
sai_tunnel_support=1
use_all_splithorizon_groups=1
bcm_tunnel_term_compatible_mode=1
riot_enable=1
riot_overlay_l3_intf_mem_size=4096
riot_overlay_l3_egress_mem_size=32768
riot_overlay_ecmp_resilient_hash_size=16384
flow_init_mode=1
l3_ecmp_levels=2

This is already in the source code for some Broadcom templates, but not all. File can be found in /usr/share/sonic/device/yourdevice/blablabla.bcm. Not sure why this isn’t applied to every Broadcom switch, it might break other stuff.
For tunnels to actualy establish you have to alter the source code and compile your own build. One thing is that tunnels are reported as ‘down’ while they are actually ‘up’, but they don’t pass traffic so you end up throubleshooting something that is just a display error. Fixed by adding lines from issue #2080. But even though the tunnel now displays itself als ‘up’ there is still no traffic, that is because incoming ethernet packets have their ttl value copied to the vxlan packet and the first packet you send is arp with a ttl value of zero… So no mac is learned on either side of the tunnel and ipv4 pings do not work. What does arrive at the other side of the tunnel is broadcast/multicast and ipv6. Found out about this after a few days of wireshark where suddenly some Dropbox discovery packets arrived at the other side.
Fixed by changing the relative value of ‘encap_ttl’ in both vxlanorch.cpp and vxlanorch.h to a static value of 128. Files can be found in /sonic-swss/orchagent/ of the source code.

If you want a dumb switch with a lot of bandwith and maybe one or two vlans on it then SONiC isn’t all that difficult.

3 Likes

If anyone does an Install from ONIE and didn’t have a new .bin OS file to point it to, then your OS will seem like it is lost.

You are very likely to be able to recover it though. When you boot ONIE into Install mode, then the first thing it does is change the boot order so that ONIE is now first. When the new OS install is successful, the last thing it does it set that new OS to be the first boot order. You likely just need to fix your boot order.

Here is what you do (oh, and don’t type the quotation marks):

  1. Reboot and select Rescue from the ONIE GRUB menu.

  2. Type “efibootmgr” and hopefully you will find that your OS partition is still present, but not the first item in the boot order.

  3. Take note of your current boot order, and which partition number has your OS on it.
    So maybe ONIE is 00000, Enterprise_SONiC is 00001, the Diag-OS is 00003, and the efi-shell is 00004

  4. Set the boot order by using the "efibootmgr -o " command. You don’t need the leading zeros here. Make sure it is a lower-case “o”
    So you would type something like “efibootmgr -o 1,3,0,4”

  5. Be sure to put your OS first in the list, but put the other entries behind it so that you have them to fall back to.

  6. Reboot

  7. The switch should boot back up to your OS. :smiley:

1 Like

In case it is helpful, I managed to get a sample output from a switch. Your boot device numbers/order may vary.

If you are still in Install mode, then you’ll want to stop the discovery process with

onie~$ onie-discovery-stop

Then check and fix your boot order with:

onie~$ efibootmgr

BootCurrent: 0002
Timeout: 3 seconds
BootOrder: 0002,0000,0001,0003
Boot0000* SONiC-OS
Boot0001* UEFI: Built-in EFI Shell
Boot0002* ONIE: Open Network Install Environment
Boot0003* EDA-DIAG

onie~$ efibootmgr -o 0,2,3,1

BootCurrent: 0002
Timeout: 3 seconds
BootOrder: 0000,0002,0003,0001
Boot0000* SONiC-OS
Boot0001* UEFI: Built-in EFI Shell
Boot0002* ONIE: Open Network Install Environment
Boot0003* EDA-DIAG

Then restart the switch and you should be back in your OS.

onie~$ reboot

Hi Wendell! Not sure if you are still looking over here every now and again, but if so:

How is the fan noise on the S5212? I am hoping that it is either tolerable by default, or more easily modded, since the power supplies and fans aren’t swappable.

I have an old S3048 (1gig), and while I did a successful Noctua fan swap on one of the modular fans (and just pull the others after post), I couldn’t do anything about the modular power supply fan.

The switch complains about the modular fan not spinning fast enough (or being missing), but works anyway. When I replaced the fan in one of my power supplies though, the power supply seems to kick out an internal error and just refuses to power the switch. So in the end I can run my S3048 at room temp on a single modified, modular fan, and my original piercing power supply fan.

Pics or it didn’t happen:
Here is the working modular fan (the reverse airflow switch made running the wires easier).


Here is the power supply that quit it’s job after I gave it a fancier fan.

hello, can someone explain me what does that mean for my switch? i bought i brand new from Italy, can i use it without that pesky 3 Day shutdown? i changed the Fans to 2x Noctua 40mm and one Artic 40mm Fan i had lying around. Had to change the Pins in the connector and the switch knows that something is off with the fan speed but boots just fine.

i bought this one Dell EMC Switch S4112F 12 X 10GBE SFP+3X100GBE
i bit 500€ the seller had it in for 900€

License Type : PERPETUAL
License Duration: Unlimited
License Status : Active

license

edit it runs now edit

Seems like it does work.

Its like a hair drying on the lowest setting. If you remove a fan the thing gets mad and ramps up al other fans over 9000rpm and you need earplugs to be around it for more than a minute.