Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
raspberry-pi:ipfire-on-rpicm4 [2023/12/17 17:32] – [Adjusting interfaces (important!)] Zyzonixraspberry-pi:ipfire-on-rpicm4 [2024/04/23 11:22] (current) – [Adjusting interfaces (important!)] Zyzonix
Line 6: Line 6:
  
 //Disclaimer: all provided links in this article **aren't** sponsored!// //Disclaimer: all provided links in this article **aren't** sponsored!//
-<callout type="info" icon="true">Tutorial tested against a Raspberry Pi Compute Module 4 (4GB, rev. 1.2) and IPFire Core Update 179. During the setup a second Raspberry Pi 3A with local attached keyboard and monitor was used. </callout>+<callout type="info" icon="true">Tutorial tested against a Raspberry Pi Compute Module 4 (4GB, rev. 1.2) and IPFire Core Update 179. During the setup a second Raspberry Pi 3B+ with local attached keyboard and monitor was used. </callout>
  
 → IPFire's wiki can be found [[https://wiki.ipfire.org/|here]]. → IPFire's wiki can be found [[https://wiki.ipfire.org/|here]].
Line 22: Line 22:
   * //HDMI-Cable//   * //HDMI-Cable//
   * //Keyboard//   * //Keyboard//
 +  * //or USB2TTL Apdapter//
  
 ===== Download and flash the Image to the SD-Card ===== ===== Download and flash the Image to the SD-Card =====
Line 47: Line 48:
 Now connect the following pins on your carrier board's GPIO and your second Pi's GPIO with three jumper wires (female to female): Now connect the following pins on your carrier board's GPIO and your second Pi's GPIO with three jumper wires (female to female):
 <WRAP 40%> <WRAP 40%>
-^ Carrier Board (CM4)  ^ 2nd Raspberry Pi  ^ Use               ^ +^ Carrier Board (CM4)  ^ 2nd Raspberry Pi / USB2TTL  ^ Use               ^ 
-| **''6''**            | **''6''**         | Ground            +| **''6''**            | **''6''** / **''GND''**     | Ground (GND)      
-| **''10''**           | **''8''**         | Receive and send  | +| **''10''**           | **''8''** / **''TX''**      | Receive and send  | 
-| **''8''**            | **''10''**        | Send and receive  |+| **''8''**            | **''10''** / **''RX''**     | Send and receive  |
 </WRAP> </WRAP>
  
Line 65: Line 66:
  
 <callout type="warning" icon="true"> <callout type="warning" icon="true">
-When using a Raspberry Pi 4B also add the following lines to your ''config.txt'' to get a human-readable console:+When using a Raspberry Pi with bluetooth as second device also add the following lines to your ''config.txt'':
 <code bash> <code bash>
 +# disable bluetooth via uart
 dtoverlay=pi3-disable-bt dtoverlay=pi3-disable-bt
 dtoverlay=pi3-miniuart-bt dtoverlay=pi3-miniuart-bt
 +dtoverlay=disable-bt
 +dtoverlay=miniuart-bt
 </code> </code>
-In general there might be issues with newer versions of the Raspberry Pitherefore consider using an older version as second device. Additionally do not dis- and reconnect to a running console session, otherwise your console might not be readable anymore for this session.+This will disable the bluetooth module, because this may break your serial connection as it also uses the uart console. 
 + 
 +In general there might be issues with the serial connectionit's recommended to firstly open the serial console on the second Pi and then booting up the CM4. Additionally **do not** dis- and reconnect to a running console session, otherwise your console might not be readable anymore for this session.
 </callout> </callout>
  
-Then you can execute the follwing command from the second Pi to connect to your serial console. It doens't matter if you're using an attached keyboard and monitor or SSH-connection.+Then you can execute the follwing command from the second Pi to connect to your serial console. **It's strongly recommended to use a local attached keyboard and monitor on Pi that boots to CLI(!) rather than creating the serial connection via SSH / Desktop.**
 <code bash>screen /dev/ttyS0 115200</code> <code bash>screen /dev/ttyS0 115200</code>
 +(root-permission required!)
 → you might install ''screen'' befire by running the following command: → you might install ''screen'' befire by running the following command:
 <code bash>sudo apt install screen</code> <code bash>sudo apt install screen</code>
 +If ''/dev/ttyS0'' doesn't work, use ''/dev/serial0''. In case you are using a USB2TTL-Card use ''/dev/ttyUSB0''.
  
 Finally perform the setup of IPFire as usual! Finally perform the setup of IPFire as usual!
Line 88: Line 96:
 **Select the 3rd option, that contains ''serial console''!** **Select the 3rd option, that contains ''serial console''!**
  
-===== Adjusting interfaces (important!) ===== +===== Adjusting Interfaces (MAC Addresses) (important!) =====
- +
-As described also in this [[https://community.ipfire.org/t/rpi-cm4-red-interface-not-available-after-reboot/7119/3|blog post]] in IPFire's official forum, there are assigment issues with the carrier board's NICs. It seems that the second PCIe NIC gets a self-assignet MAC everytime the device boots up. This is followed by the host OS no longer recognizing the NIC. To solve this issue there is a more or less fancy workaround: +
- +
-First figure out which NIC causes the error, therefore reboot your machine, login via serial and execute the following command: +
-<code bash>ifconfig -a</code> +
-It will print all ethernet devices, no matter if active or inactive. +
- +
-The output should look like anything of this: no matter if selected the red or the green interface to be on the Pi's built-in NIC: +
-<code bash> +
-eth1:  +
-[...] +
-lo: +
-[...] +
-red0: +
-[...] +
-</code> +
-<code bash> +
-eth1:  +
-[...] +
-lo: +
-[...] +
-green0: +
-[...] +
-</code> +
-No matter if selected the red or the green interface to be on the Pi's built-in NIC, you will have an "unassigned" ''eth1'' interface, which is the second PCIe NIC. To make your now unassigned interface persistent after future reboots, add ''eth1'' to IPFire's ethernet config: +
- +
- +
-  * **Case 1:** The <color #ed1c24>red</color> interface should be on the second NIC: +
-++++ Show/Hide | +
-<code bash>echo RED_DEV=eth1 >> /var/ipfire/ethernet/settings</code> +
-+++++
  
 +As described also in this [[https://community.ipfire.org/t/rpi-cm4-red-interface-not-available-after-reboot/7119/3|blog post]] in IPFire's official forum, there are assigment issues with the carrier board's NICs. It seems that the second PCIe NIC gets a self-assignet MAC everytime the device boots up. This is followed by the host OS no longer recognizing the NIC. To solve this issue there is a more or less fancy workaround here in this wiki: [[linux:linux-tutorials:set-persistent-mac-rtl8111|Set persistent MAC for RTL8111/8168/8411 (r8169) with udev]] (internal link).
  
-  * **Case 2:** The <color #22b14c>green</color> interface should be on the second NIC: 
-++++ Show/Hide | 
-<code bash>echo GREEN_DEV=eth1 >> /var/ipfire/ethernet/settings</code> 
-++++ 
  
 +It's also recommended to completely shut down again and reboot to verify the changes!
  
 ---- ----
  • raspberry-pi/ipfire-on-rpicm4.1702830752.txt.gz
  • Last modified: 2023/12/17 17:32
  • by Zyzonix