{"id":129,"date":"2022-11-01T16:53:19","date_gmt":"2022-11-01T15:53:19","guid":{"rendered":"https:\/\/bilbo-b.wks20.de\/?p=129"},"modified":"2022-11-01T16:53:19","modified_gmt":"2022-11-01T15:53:19","slug":"cm4-io-base-b-von-waveshare","status":"publish","type":"post","link":"https:\/\/qlch.de\/blog\/2022\/11\/01\/cm4-io-base-b-von-waveshare\/","title":{"rendered":"CM4-IO-Base-B von Waveshare"},"content":{"rendered":"\n<p>Seit einer Weile sind Raspberry Pi 4 eher schlecht zu bekommen. Ich hatte mir wg. meiner Bestellung des <a rel=\"noreferrer noopener\" href=\"https:\/\/www.crowdsupply.com\/nabu-casa\/home-assistant-yellow\" target=\"_blank\">Homeassistant Yellow<\/a> bereits ein <a rel=\"noreferrer noopener\" href=\"https:\/\/www.raspberrypi.com\/products\/compute-module-4\/?variant=raspberry-pi-cm4001000\" target=\"_blank\">Compute Module 4<\/a> gekauft, also quasi das Herz des Raspi nur ohne I\/O. Die Lieferung des Yellow hat sich leider weiter und weiter verschoben (aktuell auf Ende Jan 2023), so da\u00df ich auf die Idee kam mit einem anderen I\/O Board einen Computer zu vervollst\u00e4ndigen.<\/p>\n\n\n\n<p>Das im Titel genannte <a rel=\"noreferrer noopener\" href=\"https:\/\/www.waveshare.com\/wiki\/CM4-IO-BASE-B?amazon\" target=\"_blank\">CM4-IO-BASE-B<\/a> gefiel mir ganz gut und kam mit Netzteil, Geh\u00e4use, L\u00fcfter etc. (dauerte nach Amazon-Bestellung ein paar Wochen, bis es aus China geliefert war).<\/p>\n\n\n\n<p>So konnte ich schon mal \u00fcben, wie ich mit <a href=\"https:\/\/github.com\/raspberrypi\/usbboot\" target=\"_blank\" rel=\"noreferrer noopener\">usbboot\/rpiboot<\/a> und dem Raspberry Imager die EMMC bespielte, funktionierte ungewohnt, aber auf Anhieb. Meine Versuche, die NVMe-SSD als Bootmedium zu benutzen, scheiterten mehrfach.<\/p>\n\n\n\n<p>Ich fand dann diesen <a rel=\"noreferrer noopener\" href=\"https:\/\/dphacks.com\/2021\/11\/21\/how-to-boot-a-pi-cm4-from-nvme-ssd\/\" target=\"_blank\">Blogpost<\/a>, der das Prozedere so beschrieb, wie es dann auch f\u00fcr mich funktionierte. Abweichend von dem Blogpost nutzte ich <a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/billw2\/rpi-clone\" target=\"_blank\">rpi-clone<\/a> (Danke, Volker), um \/boot und die root-partition von EMMC auf NVMe zu kopieren und die entsprechenden Eintr\u00e4ge zu \u00e4ndern.<\/p>\n\n\n\n<p>In unserem Fall mu\u00dfte noch eine Zeile gepatched werden wie <a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/billw2\/rpi-clone\/issues\/123#issuecomment-906981043\" target=\"_blank\">hier <\/a>beschrieben auf:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><code>if [[ $dst_disk == *\"mmcblk\"* || $dst_disk == *\"nvme\"* ]] # update this line<\/code><\/p><\/blockquote>\n\n\n\n<p>Zu guter letzt habe ich noch die Schritte ab Abschnitt 5 in <a rel=\"noreferrer noopener\" href=\"https:\/\/pimylifeup.com\/raspberry-pi-rtc\/\" target=\"_blank\">diesem Blogpost <\/a>nachvollzogen, um die rtc \/ hwclock auch zu benutzen. Davor hatte ich wie auf der oben bereits <a rel=\"noreferrer noopener\" href=\"https:\/\/www.waveshare.com\/wiki\/CM4-IO-BASE-B?amazon\" target=\"_blank\">verlinkten Produktseite beschrieben<\/a> die Anweisungen f\u00fcr den L\u00fcfter (Achtung, nie den L\u00fcfterstecker stecken oder ziehen, wenn der Raspi Strom hat!) und die rtc befolgt.<\/p>\n\n\n\n<p>Weil ich vor meinen ersten Erfolgen sehr oft geimaged und L\u00fcfter\/RTC Treiber installiert habe, hatte ich mir dazu ein rudiment\u00e4res Script gebaut (der hostname sei waveshare): <\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-style-default is-layout-flow wp-block-quote-is-layout-flow\"><p><code>ssh-copy-id pi@waveshare<br>ssh pi@waveshare \"sudo apt update ; sudo apt full-upgrade ; sudo apt install dkms git raspberrypi-kernel-headers\"<br>ssh pi@waveshare \"mkdir -p ~\/src ; cd ~\/src ; git clone https:\/\/github.com\/neg2led\/cm4io-fan.git ; cd cm4io-fan ; sudo chmod 777 install.sh ; sudo .\/install.sh\"<br>ssh pi@waveshare 'echo \"echo dtoverlay=i2c-rtc,pcf85063a,i2c_csi_dsi >>\/boot\/config.txt\" >install-rtc.sh'<\/code><\/p><p># die einfachen Anf\u00fchrungszeichen bewirken, da\u00df alles dazwischen von ssh an den raspi \u00fcbertragen und dort interpretiert wird, nicht lokal auf meinem Mac (incl. der Ausgabeumlenkungen)<code><br>ssh pi@waveshare chmod +x install-rtc.sh<br>ssh pi@waveshare sudo .\/install-rtc.sh<br>ssh pi@waveshare tail \/boot\/config.txt<br>echo \"Taste \u2026\"<br>read a<br>ssh pi@waveshare sudo reboot<\/code><\/p><\/blockquote>\n\n\n\n<p>Viel Spa\u00df beim Nachbasteln \ud83d\ude42<\/p>\n\n\n\n<p><strong>Update:<\/strong> ein mir vorher nicht klarer &#8220;Nachteil&#8221; dieses I\/O Boards ist, da\u00df nur kleine M2 NVMe-SSDs verbaut werden k\u00f6nnen (2230 oder 2242). Die vom Hersteller empfohlene h\u00e4tte ich nur in Asien bestellen k\u00f6nnen, eine andere w\u00e4re aus USA geshipped worden. Teilweise wurde berichtet, da\u00df doppelseitig best\u00fcckte SSDs geliefert wurden (zu Artikelbeschreibungen\/-bildern von einseitig best\u00fcckten), die leider nicht passen. Ich hab mich letztlich f\u00fcr &#8220;Samsung SSD 256GB PM991 M.2 2242 42mm PCIe 3.0 x4 NVMe MZALQ256HAJD MZ-ALQ2560 Solid State Drive f\u00fcr Lenovo Dell HP Acer Asus Andere&#8221; auf Amazon entschieden, die passt und funktioniert gut.<\/p>\n\n\n\n<p><strong>Update2:<\/strong> um zu erfahren, wo es Raspis oder CM4 auf Lager gibt, hilft <a rel=\"noreferrer noopener\" href=\"https:\/\/rpilocator.com\/?instock\" target=\"_blank\">rpilocator<\/a> (f\u00fcr andere schwer lieferbare HW hilft <a rel=\"noreferrer noopener\" href=\"https:\/\/hwlocator.com\/?instock\" target=\"_blank\">hwlocator<\/a>)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Seit einer Weile sind Raspberry Pi 4 eher schlecht zu bekommen. Ich hatte mir wg. meiner Bestellung des Homeassistant Yellow bereits ein Compute Module 4 gekauft, also quasi das Herz des Raspi nur ohne I\/O. Die Lieferung des Yellow hat sich leider weiter und weiter verschoben (aktuell auf Ende Jan 2023), so da\u00df ich auf [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[5],"class_list":["post-129","post","type-post","status-publish","format-standard","hentry","category-allgemein","tag-raspi"],"_links":{"self":[{"href":"https:\/\/qlch.de\/blog\/wp-json\/wp\/v2\/posts\/129","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/qlch.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/qlch.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/qlch.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/qlch.de\/blog\/wp-json\/wp\/v2\/comments?post=129"}],"version-history":[{"count":0,"href":"https:\/\/qlch.de\/blog\/wp-json\/wp\/v2\/posts\/129\/revisions"}],"wp:attachment":[{"href":"https:\/\/qlch.de\/blog\/wp-json\/wp\/v2\/media?parent=129"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/qlch.de\/blog\/wp-json\/wp\/v2\/categories?post=129"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/qlch.de\/blog\/wp-json\/wp\/v2\/tags?post=129"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}