No keyboard input over serial console of Clearfog CX LX2

Hi,

I updated the firmware, the system boots and I can see output (uboot + linux) on the serial console but the keyboard input is not working and the machine is not responding to keyboard strokes.

There are 2 USB cables - one for the ttyACM0/1 and the other for ttyUSB0. ttyACM1 is used for rebooting and it works. ttyUSB0 is used for serial console (output works but input does not work, as explained above).

How to solve this issue?

Make sure that Hardware Flow control is disabled in your serial terminal program.

I disabled hardware control flow through minicom but there is still no input on ttyUSB0.

Can you attach the jumper that puts the uBMC microcontroller on ttyACM0/1 back into DFU mode? The uBMC is also attached to the serial console lines and I wonder if the firmware is blocking input.

Thank you, that was the issue, after connecting the jumper and issuing the re command, ttyUSB0 is taking inputs again.

ACM0/1 are now gone and the uBMC is in DFU mode.

Might be useful for someone. I’ve encountered the same issue. When connecting management console LX’s serial console stops responding to keyboard input. Looks like management MCU intercepts LX’s console and should redirect all input/output to /dev/ttyACM0 but for some reason it doesn’t work - so it is not possible to input commands neither to /dev/ttyACM0 nor to /dev/ttyUSB0.
Looks like a bug in MCU firmware GitHub - SolidRun/project-limbs: BMC - Board Management control, base stm32 with multi CDC-UARTs
Since i needed both the management console to be able to reset and power on\off LX and LX’s console and had no time to investigate MCU’s firmware i just disabled the serial console interception:

diff --git a/src/config.h b/src/config.h
index b7fbbce..4da1727 100755
--- a/src/config.h
+++ b/src/config.h
@@ -4,7 +4,7 @@
 /*
 adjust these to suit the application
 */
-#define NUM_OF_CDC_UARTS                    2
+#define NUM_OF_CDC_UARTS                    1
 //# define ADC_ENABLE 1
 #define ADC_IT_MODE 0
 /* calculate voltage ADC factore
diff --git a/src/usbd_cdc.c b/src/usbd_cdc.c
index a69f7bf..77522df 100755
--- a/src/usbd_cdc.c
+++ b/src/usbd_cdc.c
@@ -113,7 +113,7 @@ static const struct
 {
 #if (NUM_OF_CDC_UARTS > 0)
   {
-    .Instance = USART1,
+    .Instance = USART2,
     .data_in_ep  = 0x81,
     .data_out_ep = 0x01,
     .command_ep  = 0x82,

Another curious thing i’ve found - LX doesn’t boot from internal eMMC if SPI interface from LX is not connected to SPI NOR FLASH on carrier board. To resolve this - i’ve entered sc command in management console. This looks strange because i’m booting from internal eMMC, not from SPI NOR FLASH.

If you are use the UEFI based firmware it uses the spi-nor flash for variable storage regardless of the boot media. The options for this are to leave the CS connected to the spi-nor flash that is on the CEX7 module, or use a secure variable storage build of the UEFI firmware which uses the i2c nand in secure world for variable storage.

Thanks for reply! I’m not using UEFI based firmware. Moreover SPI NOR FLASH on carrier board doesn’t contain any valid data, that’s why looks strange for me.

I would have to look at the u-boot code paths in the BSP. That shouldn’t make any sense when booting from eMMC. Maybe the u-boot env is being put there accidentally