{"id":1077,"date":"2021-05-29T11:40:46","date_gmt":"2021-05-29T10:40:46","guid":{"rendered":"https:\/\/www.marcinwilk.eu\/?p=1077"},"modified":"2021-06-01T16:28:09","modified_gmt":"2021-06-01T15:28:09","slug":"aktualizacja-firmware-connectx-za-pomoca-mstflint","status":"publish","type":"post","link":"https:\/\/www.marcinwilk.eu\/pl\/2021\/05\/aktualizacja-firmware-connectx-za-pomoca-mstflint\/","title":{"rendered":"Aktualizacja firmware ConnectX za pomoc\u0105 mstflint"},"content":{"rendered":"Dzisiaj mia\u0142em okazj\u0119 zaktualizowa\u0107 oprogramowanie uk\u0142adowe (firmware) karty Mellanox ConnectX-3. Pomy\u015bla\u0142em, \u017ce przybli\u017c\u0119 ten proces (powinien sprawdzi\u0107 si\u0119 tak\u017ce dla poprzednich modeli kart serii ConnectX).<\/p>\n<p><!--more--><\/p>\n<p>&nbsp;<\/p>\n<p>Urz\u0105dzenie na PCIe ConnectX-3 to produkcji Mellanox (obecnie nale\u017c\u0105cego do nVidia) karta sieciowa wyposa\u017cone w interfejs (lub dwa) SFP+ o wydajno\u015bci sieciowej 10Gb\/s.<\/p>\n<p>W interfejs wk\u0142adamy wk\u0142adki, kt\u00f3re posiadaj\u0105 odpowiednie gniazdo dostosowane do sieci lokalnej &#8211; optyczne (np. LC), miedziane (np. RJ45), oraz z zamontowanym na sta\u0142e przewodem (miedzianym) &#8211; tzw. przewody DAC. Aby zaktualizowa\u0107 firmware trzeba przygotowa\u0107 oprogramowanie mstflint (<a href=\"https:\/\/github.com\/Mellanox\/mstflint\/\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/Mellanox\/mstflint\/<\/a>) oraz zainstalowa\u0107 kilka bibliotek w systemie. Aktualizacj\u0119 przeprowadzi\u0142em w systemie operacyjnym RedHat Enteprise Linux 8.4 (co gwarantuje, i\u017c identyczne kroki zadzia\u0142aj\u0105 w RockyLinux 8 czy CentOS 8). Wszystkie kroki musimy wykonywa\u0107 z uprawnieniami u\u017cytkownika root.<br \/>\nPrzygotowanie systemu:<\/p>\n<pre># instalacja narz\u0119dzi do kompilacji\r\ndnf group install \"Development Tools\" -y\r\n# instalacja potrzebnych bibliotek\r\ndnf install openssl-devel libibmad-devel zlib-devel wget unzip pciutils -y<\/pre>\n<p>Kolejnym krokiem jest pobranie \u017ar\u00f3de\u0142 i kompilacja programu mstflint &#8211; jest to pakiet, kt\u00f3ry pozwala na komunikacj\u0119 z kart\u0105 sieciow\u0105 ConnectX i zarz\u0105dzanie jej oprogramowaniem uk\u0142adowym.<br \/>\nInstalacja mstflint:<\/p>\n<pre># przej\u015bcie do folderu \/tmp\/ aby nie robi\u0107 nieporz\u0105dku w systemie\r\ncd \/tmp\r\n# pobieranie aktualnych \u017ar\u00f3de\u0142 mstflint\r\nwget https:\/\/github.com\/Mellanox\/mstflint\/archive\/refs\/heads\/master.zip\r\n# wypakowanie i uruchomienie skryptu przygotowawczego\r\nunzip master.zip\r\ncd mstflint-master\/\r\n.\/autogen.sh\r\n# konfiguracja, kompilacja i instalacja w systemie\r\n.\/configure\r\nmake\r\nmake install<\/pre>\n<p>Teraz musimy ustali\u0107 adres naszej karty sieciowej. Wystarczy skorzysta\u0107 z komendy \"lspci\", kt\u00f3ra wy\u015bwietli list\u0119 urz\u0105dze\u0144. Liczba po lewej to adres, kt\u00f3rego u\u017cyjemy do komunikacji z kart\u0105 (jak na obrazku ni\u017cej):<\/p>\n<p><a href=\"https:\/\/www.marcinwilk.eu\/wp-content\/2021\/05\/connectx-device-lspci.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1093 size-large\" title=\"lspci connectx\" src=\"https:\/\/www.marcinwilk.eu\/wp-content\/2021\/05\/connectx-device-lspci-1024x156.png\" alt=\"\" width=\"840\" height=\"128\" srcset=\"https:\/\/www.marcinwilk.eu\/wp-content\/2021\/05\/connectx-device-lspci-1024x156.png 1024w, https:\/\/www.marcinwilk.eu\/wp-content\/2021\/05\/connectx-device-lspci-300x46.png 300w, https:\/\/www.marcinwilk.eu\/wp-content\/2021\/05\/connectx-device-lspci-768x117.png 768w, https:\/\/www.marcinwilk.eu\/wp-content\/2021\/05\/connectx-device-lspci-1200x183.png 1200w, https:\/\/www.marcinwilk.eu\/wp-content\/2021\/05\/connectx-device-lspci.png 1283w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/a><\/p>\n<p>Warto sprawdzi\u0107, czy mstflint dzia\u0142a, aby to zrobi\u0107 zapytamy o informacje na temat obecnej wersji firmware, kt\u00f3rego u\u017cywa karta komend\u0105 (wpisz po -d adres, kt\u00f3ry wy\u015bwietli\u0142 u Ciebie lspci):<\/p>\n<pre>mstflint -d <strong><span style=\"color: #ff0000;\">01:00.0<\/span><\/strong> q full<\/pre>\n<p>Wynik powinien przypomina\u0107 co\u015b takiego:<\/p>\n<pre># mstflint -d 01:00.0 q\r\nImage type: FS2\r\nFW Version: 2.33.5220\r\nFW Release Date: 29.3.2015\r\nMIC Version: 1.5.0\r\nConfig Sectors: 1\r\nProduct Version: 02.33.52.20\r\nRom Info: type=PXE version=3.4.467\r\nDevice ID: 4099\r\nDescription: Node Port1 Port2 Sys image\r\nGUIDs: ffffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffff\r\nMACs: f4521427b0c0 f4521427b0c1\r\nVSD:\r\n<span style=\"color: #3366ff;\"><strong>PSID: MT_1170110023<\/strong><\/span><\/pre>\n<p>Jak wida\u0107, komunikacja si\u0119 powiod\u0142a i mamy mo\u017cliwo\u015b\u0107 aktualizacji firmware. Nale\u017cy zacz\u0105\u0107 od pobrania wersji dopasowanej do naszej karty sieciowej ze strony producenta &#8211; tj. <a href=\"https:\/\/www.mellanox.com\/support\/firmware\/firmware-downloads\" target=\"_blank\" rel=\"noopener\">https:\/\/www.mellanox.com\/support\/firmware\/firmware-downloads<\/a>.<\/p>\n<p>Po lewej szukamy modelu, kt\u00f3ry mamy (np. ConnectX-3) a po prawej wybieramy rodzaj urz\u0105dzenia (Ethernet w wypadku karty sieciowej). Patrz\u0105c na dost\u0119pne wersje wida\u0107, \u017ce istnieje mo\u017cliwo\u015b\u0107 wgrania nowszej. Trzeba jednak wybra\u0107 (z tabelki OPN) wersj\u0119 urz\u0105dzenia. Mo\u017cemy j\u0105 pozna\u0107 znowu korzystaj\u0105c z narz\u0119dzia lspci za pomoc\u0105 komendy (wpisz po -s adres, kt\u00f3ry wy\u015bwietli\u0142 u Ciebie lspci):<\/p>\n<pre>lspci -vv -s <span style=\"color: #ff0000;\"><strong>01:00.0<\/strong><\/span> | grep \"Part number\" -A 3<\/pre>\n<p>Wynik (pokazany poni\u017cej) wskazuje wersj\u0119 urz\u0105dzenia, kt\u00f3r\u0105 posiadamy, i to j\u0105 nale\u017cy wskaza\u0107 w kolumnie OPN na stronie z firmware.<\/p>\n<pre>[PN] <span style=\"color: #ff0000;\"><strong>Part number: MCX311A-XCAT<\/strong><\/span>\r\n[EC] Engineering changes: A6\r\n[SN] Serial number: MT1402X13666\r\n[V0] Vendor specific: PCIe Gen3 x4<\/pre>\n<p>W kolejnej kolumnie \"PSID\" wybieramy numer zgodny z tym, kt\u00f3ry pokaza\u0142 nam msflint z argumentem g full (zaznaczony wy\u017cej na niebiesko). Po prawej w kolumeni \"Download\/Documentation\" pojawi si\u0119 odno\u015bnik do stosownego archiwum zawieraj\u0105cego firmware dla urz\u0105dzenia. Pobieramy go, rozpakowujemy i programujemy nasz\u0105 kart\u0119:<\/p>\n<pre># pobranie pliku\r\nwget http:\/\/www.mellanox.com\/downloads\/firmware\/plik.zip\r\n# wypakowanie (wypakowany plik ma rozszerzenie .bin)\r\nunzip plik.zip\r\n# programowanie, trzeba potwierdzi\u0107 \u017ce chcemy to zrobi\u0107 klikaj\u0105c w \"y\"\r\nmstflint -d <span style=\"color: #ff0000;\"><strong>01:00.0<\/strong><\/span> -i plik.bin burn\r\n\r\nCurrent FW version on flash: 2.33.5220 <span style=\"color: #3366ff;\"><em>(obecna wersja firmware)<\/em><\/span>\r\nNew FW version: 2.42.5000 <span style=\"color: #3366ff;\"><em>(wersja do wgrania)<\/em><\/span>\r\n\r\nBurn process will not be failsafe. No checks will be performed.\r\nALL flash, including the Invariant Sector will be overwritten.\r\nIf this process fails, computer may remain in an inoperable state.\r\nDo you want to continue ? (<strong>y<\/strong>\/n) [n] : <span style=\"color: #ff0000;\"><strong>y<\/strong><\/span>\r\n\r\nBurning FS2 FW image without signatures - OK\r\nRestoring signature - OK<\/pre>\n<p>Po tej operacji wystarczy zrestartowa\u0107 komputer i gotowe! Mo\u017cemy cieszy\u0107 si\u0119 poprawkami oprogramowania karty sieciowej.\n<input class=\"fooboxshare_post_id\" type=\"hidden\" value=\"1077\"\/>","protected":false},"excerpt":{"rendered":"<p>Dzisiaj mia\u0142em okazj\u0119 zaktualizowa\u0107 oprogramowanie uk\u0142adowe (firmware) karty Mellanox ConnectX-3. Pomy\u015bla\u0142em, \u017ce przybli\u017c\u0119 ten proces (powinien sprawdzi\u0107 si\u0119 tak\u017ce dla poprzednich modeli kart serii ConnectX).<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,111,59,65,63,64,61,60],"tags":[66,41,149,26,171,159,97,40,170,42,158],"class_list":["post-1077","post","type-post","status-publish","format-standard","hentry","category-computers","category-firmware","category-hardware","category-linux","category-network","category-siec","category-sieci","category-sprzet","tag-bash","tag-centos","tag-centos8","tag-computer","tag-connectx","tag-el8","tag-firmware","tag-linux","tag-mellanox","tag-rhel","tag-rhel8"],"_links":{"self":[{"href":"https:\/\/www.marcinwilk.eu\/pl\/wp-json\/wp\/v2\/posts\/1077","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.marcinwilk.eu\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.marcinwilk.eu\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.marcinwilk.eu\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.marcinwilk.eu\/pl\/wp-json\/wp\/v2\/comments?post=1077"}],"version-history":[{"count":0,"href":"https:\/\/www.marcinwilk.eu\/pl\/wp-json\/wp\/v2\/posts\/1077\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.marcinwilk.eu\/pl\/wp-json\/wp\/v2\/media?parent=1077"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.marcinwilk.eu\/pl\/wp-json\/wp\/v2\/categories?post=1077"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.marcinwilk.eu\/pl\/wp-json\/wp\/v2\/tags?post=1077"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}