Buildroot - RPI3 - Find the BCM43438 firmware to enable wireless - wifi

i'm a beginner.
i use a RPI3 and a buildroot build system and try to enable wireless.
I followed several links without success.
In particulary, i followed this link : https://delog.wordpress.com/2014/10/10/wireless-on-raspberry-pi-with-buildroot/
and verify my linux kernel wireless options are activated, but no results.
However, the options i used on the buildroot . config file seems to be good :
debian-host:/build/buildroot# egrep -i "wireless|wpa|80211" .config
# BR2_PACKAGE_WIRELESS_REGDB is not set
BR2_PACKAGE_WIRELESS_TOOLS=y
BR2_PACKAGE_WIRELESS_TOOLS_LIB=y
BR2_PACKAGE_WPA_SUPPLICANT=y
BR2_PACKAGE_WPA_SUPPLICANT_NL80211=y
BR2_PACKAGE_WPA_SUPPLICANT_AP_SUPPORT=y
BR2_PACKAGE_WPA_SUPPLICANT_WIFI_DISPLAY=y
# BR2_PACKAGE_WPA_SUPPLICANT_MESH_NETWORKING is not set
BR2_PACKAGE_WPA_SUPPLICANT_AUTOSCAN=y
BR2_PACKAGE_WPA_SUPPLICANT_EAP=y
BR2_PACKAGE_WPA_SUPPLICANT_HOTSPOT=y
BR2_PACKAGE_WPA_SUPPLICANT_DEBUG_SYSLOG=y
BR2_PACKAGE_WPA_SUPPLICANT_WPS=y
BR2_PACKAGE_WPA_SUPPLICANT_CLI=y
BR2_PACKAGE_WPA_SUPPLICANT_WPA_CLIENT_SO=y
BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y
# BR2_PACKAGE_WPA_SUPPLICANT_DBUS_OLD is not set
# BR2_PACKAGE_WPA_SUPPLICANT_DBUS_NEW is not set
BR2_PACKAGE_WPAN_TOOLS=y
I installed a minibian an another rpi3, i noticed a firmware was used and i installed it by a :
apt-get install firmware-brcm80211
If the firmware is not installed, I noticed that iwlist wlan0 scan have empty results. On my RPI3-buildroot-system, after booting, lsmod show no modules.
I need to load manually by modprobe or by /etc/modules. So i load the same modules used on minibian, so i did (i loaded bluetooth mods also)
uname -a
Linux pi3 4.9.13-rt12-v7 #1 SMP Mon Mar 20 14:04:21 CET 2017 armv7l GNU/Linux
pwd
/lib/modules/4.9.13-rt12-v7/kernel/drivers
find . -name "*brcm*.ko"
./net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
./net/wireless/broadcom/brcm80211/brcmutil/brcmutil.ko
modprobe 8192cu
modprobe brcmfmac
modprobe brcmutil
modprobe hci_uart
modprobe bnep
and the lsmod show :
lsmod
Module Size Used by Not tainted
8192cu 581125 0
hci_uart 19956 0
btbcm 7992 1 hci_uart
bnep 12051 0
bluetooth 364941 3 hci_uart,btbcm,bnep
brcmfmac 222136 0
brcmutil 9156 1 brcmfmac
cfg80211 543530 1 brcmfmac
rfkill 20944 2 bluetooth,cfg80211
ipv6 405794 18 [permanent]
but
iwlist wlan0 scan
wlan0 Interface doesn't support scanning.
I don't arrive to have the same result as my minibian distro with my apt-get ..
What is the way to retrieve the buildroot process to have the same result that on my minibian ?
I've forget something ?
Thanks for helping me.

When using make menuconfig, enable rpi-wifi-firmware under Target packages > Hardware handling > Firmware to include the firmware files.

For WiFi on the Raspberry Pi, you need to enable the following packages in your defconfig file :
BR2_PACKAGE_WPA_SUPPLICANT=y
BR2_PACKAGE_RPI_WIFI_FIRMWARE=y
If you want to reference any other things, I have an older buildroot external tree here for the Raspberry Pi.

Related

RTL8188FU driver couldn't be installed because of a missing kernel tree module?

I am relatively new to Arch Linux.
So i have been dealing with this issue for quite a long time now. I got this new RTL8188FTV wireless USB network adapter and i have tried installing the drivers for it with Paru AUR helper. The installation seems to fail, as it throws this error at the end :
==> ERROR: Missing 5.15.70-1-lts kernel modules tree for module 8188fu/r112.89d7288.
I can confirm the wireless adapter is functional, since it works on Windows
Package Name: 8188fu-kelebek333-dkms-git
Is there a way to install this "kernel modules tree" so i could finish the installation?
Thanks!
Edit: back with more errors
Building module:
Cleaning build area...
'make' all KVER=6.0.5-arch1-1.............(bad exit status: 2)
Error! Bad return status for module build on kernel: 6.0.5-arch1-1 (x86_64)
Consult /var/lib/dkms/8188fu/r113.f5df53d/build/make.log for more information.
error: command failed to execute correctly
:: Running post-transaction hooks...
(1/3) Arming ConditionNeedsUpdate...
(2/3) Install DKMS modules
==> dkms install --no-depmod 8188fu/r113.f5df53d -k 6.0.5-arch1-1
Error! Bad return status for module build on kernel: 6.0.5-arch1-1 (x86_64)
Consult /var/lib/dkms/8188fu/r113.f5df53d/build/make.log for more information.
==> WARNING: `dkms install --no-depmod 8188fu/r113.f5df53d -k 6.0.5-arch1-1' exited 10
==> ERROR: Missing 5.15.75-1-lts kernel modules tree for module 8188fu/r113.f5df53d.
(3/3) Performing snapper post snapshots for the following configurations...
The command
echo 'alias usb:v0BDApF179d*dc*dsc*dp*icFFiscFFipFFin* rtl8188fu' | sudo tee /etc/modprobe.d/r8188eu-blacklist.conf
doesn't seem to do much.
Installation still fails.
Your on kernel 5.15 so you have to backlist the rl8188eu driver. You can do that with this command
echo 'alias usb:v0BDApF179d*dc*dsc*dp*icFFiscFFipFFin* rtl8188fu' | sudo tee /etc/modprobe.d/r8188eu-blacklist.conf
The code was taken from the same repo the aur package was made from
https://github.com/kelebek333/rtl8188fu

Xorg/xinput does not recognise evdev devices in Docker (Alpine base image)

I'm trying to run an Xorg server in Docker, due to the host OS not having any X installed, nor can it preserve installed packages between updates (however, Docker containers are preserved).
My goal is to run an X app in "kiosk" mode (no desktop environment, no window manager, just a single X app taking up the whole display), confined to the Docker container - specifically, Chromium to open the web management interface of the host (which is embedded in the distro).
After reading a swathe of Xorg/Xinput articles, setup guides, manuals and whatnot, and I'm still not sure what's going wrong.
This is my current Dockerfile:
FROM alpine:3.16
# Install Xorg
RUN \
apk add --no-cache \
xorg-server eudev mesa \
xinput xinit xhost evtest \
xf86-input-libinput xf86-video-fbdev xf86-input-evdev \
dbus xrandr xset xsetroot \
xeyes libinput mesa-dri-swrast mesa-dri-gallium mesa-egl
# Install Chromium
RUN \
apk add --no-cache \
chromium
CMD [ "/usr/bin/xinit", "/usr/bin/chromium-browser", "--no-sandbox", "--kiosk" ]
Then run it by passing in all the necessary udev entries:
docker run --rm -it \
--device=/dev/input \
--device=/dev/console \
--device=/dev/dri \
--device=/dev/fb0 \
--device=/dev/tty \
--device=/dev/tty1 \
--device=/dev/vga_arbiter \
--device=/dev/snd \
--cap-add=SYS_TTY_CONFIG \
alpine-xorg:latest http://172.17.0.1:8123/
In my case, I'm trying to use a 7" touchscreen HDMI display, designed for Raspberry Pis (however, I'm not using a Pi, but an Intel based mini PC).
Xorg logs aren't much help, they contain just init information about Xinput, no devices identified or anything.
Here's the log: https://paste-bin.xyz/65152
I've also fiddled around with evtest - in my case, /dev/input/event3 corresponds to the touchscreen's input, and evtest successfully recognises them: https://paste-bin.xyz/65154
However xinput doesn't even see these as a possible device:
a369b238e0f1:/var/log# xinput list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
According to the Xorg logs, the appropriate init scripts have been loaded:
[ 3724.820] (==) Using system config directory "/usr/share/X11/xorg.conf.d"
/usr/share/X11/xorg.conf.d/10-evdev.conf exists, and contains all the needed entries:
#
# Catch-all evdev loader for udev-based systems
# We don't simply match on any device since that also adds accelerometers
# and other devices that we don't really want to use. The list below
# matches everything but joysticks.
Section "InputClass"
Identifier "evdev pointer catchall"
MatchIsPointer "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
EndSection
Section "InputClass"
Identifier "evdev keyboard catchall"
MatchIsKeyboard "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
EndSection
Section "InputClass"
Identifier "evdev touchpad catchall"
MatchIsTouchpad "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
EndSection
Section "InputClass"
Identifier "evdev tablet catchall"
MatchIsTablet "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
EndSection
Section "InputClass"
Identifier "evdev touchscreen catchall"
MatchIsTouchscreen "on"
MatchDevicePath "/dev/input/event*"
Driver "evdev"
EndSection
Where is this setup going wrong, why can't xinput register the evdev devices when the necessary events are clearly there and usable?

About Beaglebone Black CAN protocol setting

Thank you for watching this.
I'm having difficulties with my BBB on CAN communication like for months...
I'd be really pleased if you could give me just a little help!
I'm working on CAN protocol between BBB and another CAN device.
The another device is confirmed to be working alright with CAN.
I'm using my BBB with Cloud9 platform on windows laptop,
and on the another device, it's using CAN0.
I have set the 'config-pin' on BBB like below using CAN1, and I tried 'cansend' utility.
The bitratre value on the another device is also set to be equal.
config-pin p9.24 can
config-pin p9.26 can
ip link set can1 up type can bitrate
cansend can1 300#AC.AB.AD.AE.75.49.AD.D1
Yet it still seems like there is no CAN packets being sent or received.
(That receiving code is written in additional info. )
Plus, I tried to catch some signal with oscilloscope machine, but I couldn't get a thing at all.
Then, I modified some lines of uEnv.txt like below, located inside the boot folder of BBB.
###Additional custom capes
uboot_overlay_addr4=/lib/firmware/BB-CAN0-00A0.dtbo
uboot_overlay_addr5=/lib/firmware/BB-CAN1-00A0.dtbo
#uboot_overlay_addr6=/lib/firmware/<file6>.dtbo
#uboot_overlay_addr7=/lib/firmware/<file7>.dtbo
###
But CAN still does not work, and config-pin command after this uEnv.txt setting shows error like below
debian#beaglebone:/lib/firmware$ config-pin -q p9.24
ERROR: open() for /sys/devices/platform/ocp/ocp:P9_24_pinmux/state failed, No such file or directory
I truly suspect there might be something wrong with the driver or pinmux setting,
because the code did work well in other situations.
The same messages for the other overlayed pins. Actually any config-pin commands don't work on these pins. (And of course the CAN bus is still not working)
I'm currently using the latest AM3358 Debian 10.3 (2020-04-06) SD IoT image, and packages seems to be all updated well. The image is flashed and no SD card is in.
I really appreciate you read this. Thank you!
Additional Info:
CAN receive part code
#include <linux/can.h>
#include <linux/can/raw.h>
#include <net/if.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <errno.h>
#include <unistd.h>
#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include <fcntl.h>
int InitCanInterface(const char *ifname){
    int sock = socket(PF_CAN, SOCK_RAW, CAN_RAW);
    fcntl(sock, F_SETFL, O_NONBLOCK);
    if (sock == -1){
        printf("Fail to create CAN socket for %s - %m \n", ifname);
        return -1;
    }
    printf("Success to create CAN socket for %s\n", ifname);
    struct ifreq ifr;
    strncpy(ifr.ifr_name, ifname, IFNAMSIZ - 1);
    int ret = ioctl(sock, SIOCGIFINDEX, &ifr);
    if (ret == -1){
        perror("Fail to get CAN interface index");
        return -1;
        }
    printf("Success to get CAN interface index: %d\n", ifr.ifr_ifindex);
    struct sockaddr_can addr;
    addr.can_family = AF_CAN;
    addr.can_ifindex = ifr.ifr_ifindex;
    ret = bind(sock, (struct sockaddr*)&addr, sizeof(addr));
    if (ret == -1){
        perror("Fail to bind CAN socket -");
        return -1;
    }
    printf("Success to bind CAN socket\n");
    return sock;}
    int TransmitCanFrame(const int sock, const uint32_t id, const uint8_t *data, const size_t data_len){
        struct  can_frame frame;
        frame.can_id = id & 0x1ffffff;
        frame.can_id |= (1<<31);
        memcpy(frame.data, data, data_len);
        frame.can_dlc = data_len;
        int tx_bytes = write(sock, &frame, sizeof(frame));
        if (tx_bytes == -1){
            perror("Fail to transmit CAN frame -");
            return -1;
        }
        printf("Success to transmit CAN frame - %d bytes is transmitted\n", tx_bytes);
        return 0;
    }
#define CAN_FRAME_MAX_LEN 8
int ReceiveCanFrame(const int sock){
    struct can_frame frame;
    int rx_bytes = read(sock, &frame, sizeof(frame));
    if (rx_bytes < 0){
        //perror("Fail to receive CAN frame -");
        return -1;
    }
    else if (rx_bytes < (int)sizeof(struct can_frame)){
        printf("Incomplete CAN frame is received - rx_bytes: %d/n", rx_bytes);
        return -1;
    }
    else if (frame.can_dlc > CAN_FRAME_MAX_LEN){
        printf("Invalid dlc: %u\n", frame.can_dlc);
        return -1;
    }
    if (((frame.can_id >> 29) & 1) ==1) {
        printf("Error frame is received\n");
    }
    else if (((frame.can_id >> 30) & 1) ==1) {
        printf("RTR frame is received\n");
    }
    else {
        if (((frame.can_id >> 31) & 1) == 0){
            printf("11bit long std CAN frame is received\n");
            printf("%#x\n",frame.can_id);
        }
        else {
            printf("29bit long ext CAN frame is received\n");
            printf("%#x\n",frame.can_id & 0x0001fffffff );
        }
    }
    for (int ii=0; ii<8; ii++) {
        printf("0x%X ", frame.data[ii]);
    }
    printf("\n");
    printf("\n");
    return 0;
}
int main(){
    int sock = InitCanInterface("can0");
    if (sock < 0 ){
        return -1;
    }
    // uint8_t can_data[CAN_FRAME_MAX_LEN] = {};
    while(1) {
    //printf("hello\n");
    //printf("%d",ReceiveCanFrame(sock));
    //if(ReceiveCanFrame(sock) == 0)
        //printf("No response\n");
    ReceiveCanFrame(sock);
    sleep(1);    
    }    
    return 0;
}
uname -a outputs
debian#beaglebone:/lib/firmware$ uname -a
Linux beaglebone 4.19.94-ti-r64 #1buster SMP PREEMPT Fri May 21 23:57:28 UTC 2021 armv7l GNU/Linux
debian#beaglebone:/lib/firmware$ sudo /opt/scripts/tools/version.sh
git:/opt/scripts/:[e8ae28ccc34a177e9435a0d24cdf8421e081c19a]
eeprom:[A335BNLT00C00620BBBK11BC]
model:[TI_AM335x_BeagleBone_Black]
dogtag:[BeagleBoard.org Debian Buster IoT Image 2020-04-06]
bootloader:[eMMC-(default)]:[/dev/mmcblk1]:[U-Boot SPL 2019.04-00002-g07d5700e21 (Mar 06 2020 - 11:24:55 -0600)]:[location: dd MBR]
bootloader:[eMMC-(default)]:[/dev/mmcblk1]:[U-Boot 2019.04-00002-g07d5700e21]:[location: dd MBR]
UBOOT: Booted Device-Tree:[am335x-boneblack-uboot-univ.dts]
UBOOT: Loaded Overlay:[AM335X-PRU-RPROC-4-19-TI-00A0]
UBOOT: Loaded Overlay:[BB-ADC-00A0]
UBOOT: Loaded Overlay:[BB-BONE-eMMC1-01-00A0]
UBOOT: Loaded Overlay:[BB-CAN0-00A0]
UBOOT: Loaded Overlay:[BB-CAN1-00A0]
UBOOT: Loaded Overlay:[BB-HDMI-TDA998x-00A0]
kernel:[4.19.94-ti-r64]
nodejs:[v10.24.0]
/boot/uEnv.txt Settings:
uboot_overlay_options:[enable_uboot_overlays=1]
uboot_overlay_options:[uboot_overlay_addr4=/lib/firmware/BB-CAN0-00A0.dtbo]
uboot_overlay_options:[uboot_overlay_addr5=/lib/firmware/BB-CAN1-00A0.dtbo]
uboot_overlay_options:[uboot_overlay_pru=/lib/firmware/AM335X-PRU-RPROC-4-19-TI-00A0.dtbo]
uboot_overlay_options:[enable_uboot_cape_universal=1]
pkg check: to individually upgrade run: [sudo apt install --only-upgrade <pkg>]
pkg:[bb-cape-overlays]:[4.14.20210416.0-0~buster+20210416]
pkg:[bb-customizations]:[1.20210708.0-0~buster+20210708]
pkg:[bb-usb-gadgets]:[1.20200504.0-0~buster+20200504]
pkg:[bb-wl18xx-firmware]:[1.20210520.0-0~buster+20210520]
pkg:[kmod]:[26-1]
pkg:[librobotcontrol]:[1.0.5-git20200715.0-0~buster+20200716]
pkg:[firmware-ti-connectivity]:[20190717-2rcnee1~buster+20200305]
groups:[debian : debian adm kmem dialout cdrom floppy audio dip video plugdev users systemd-journal bluetooth netdev i2c gpio pwm eqep remoteproc admin spi iio docker tisdk weston-launch xenomai cloud9ide]
cmdline:[console=ttyO0,115200n8 bone_capemgr.uboot_capemgr_enabled=1 root=/dev/mmcblk1p1 ro rootfstype=ext4 rootwait coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 quiet]
dmesg | grep remote
[ 65.289088] remoteproc remoteproc0: wkup_m3 is available
[ 65.320630] remoteproc remoteproc0: powering up wkup_m3
[ 65.320664] remoteproc remoteproc0: Booting fw image am335x-pm-firmware.elf, size 217148
[ 65.320951] remoteproc remoteproc0: remote processor wkup_m3 is now up
[ 68.227786] remoteproc remoteproc1: 4a334000.pru is available
[ 68.241566] remoteproc remoteproc2: 4a338000.pru is available
dmesg | grep pru
[ 68.227786] remoteproc remoteproc1: 4a334000.pru is available
[ 68.227985] pru-rproc 4a334000.pru: PRU rproc node pru#4a334000 probed successfully
[ 68.241566] remoteproc remoteproc2: 4a338000.pru is available
[ 68.241750] pru-rproc 4a338000.pru: PRU rproc node pru#4a338000 probed successfully
dmesg | grep pinctrl-single
[ 0.943044] pinctrl-single 44e10800.pinmux: 142 pins, size 568
dmesg | grep gpio-of-helper
[ 0.956633] gpio-of-helper ocp:cape-universal: ready
lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
END
dmesg for CAN
debian#beaglebone:/lib/firmware$ dmesg | grep can
[ 1.205500] c_can_platform 481cc000.can: c_can_platform device registered (regs=3377e4b7, irq=42)
[ 1.206878] c_can_platform 481d0000.can: c_can_platform device registered (regs=292aef38, irq=43)
[ 1.422353] can: controller area network core (rev 20170425 abi 9)
[ 992.007971] c_can_platform 481d0000.can can1: setting BTR=2701 BRPE=0000
[ 992.016624] IPv6: ADDRCONF(NETDEV_UP): can1: link is not ready
[ 992.017512] IPv6: ADDRCONF(NETDEV_CHANGE): can1: link becomes ready
The full uEnv.txt
debian#beaglebone:/lib/firmware$ cat /boot/uEnv.txt
#Docs: http://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0
uname_r=4.19.94-ti-r64
#uuid=
#dtb=
###U-Boot Overlays###
###Documentation: http://elinux.org/Beagleboard:BeagleBoneBlack_Debian#U-Boot_Overlays
###Master Enable
enable_uboot_overlays=1
###
###Overide capes with eeprom
#uboot_overlay_addr0=/lib/firmware/<file0>.dtbo
#uboot_overlay_addr1=/lib/firmware/<file1>.dtbo
#uboot_overlay_addr2=/lib/firmware/<file2>.dtbo
#uboot_overlay_addr3=/lib/firmware/<file3>.dtbo
###
###Additional custom capes
uboot_overlay_addr4=/lib/firmware/BB-CAN0-00A0.dtbo
uboot_overlay_addr5=/lib/firmware/BB-CAN1-00A0.dtbo
#uboot_overlay_addr6=/lib/firmware/<file6>.dtbo
#uboot_overlay_addr7=/lib/firmware/<file7>.dtbo
###
###Custom Cape
#dtb_overlay=/lib/firmware/<file8>.dtbo
###
###Disable auto loading of virtual capes (emmc/video/wireless/adc)
#disable_uboot_overlay_emmc=1
#disable_uboot_overlay_video=1
#disable_uboot_overlay_audio=1
#disable_uboot_overlay_wireless=1
#disable_uboot_overlay_adc=1
###
###PRUSS OPTIONS
###pru_rproc (4.14.x-ti kernel)
#uboot_overlay_pru=/lib/firmware/AM335X-PRU-RPROC-4-14-TI-00A0.dtbo
###pru_rproc (4.19.x-ti kernel)
uboot_overlay_pru=/lib/firmware/AM335X-PRU-RPROC-4-19-TI-00A0.dtbo
###pru_uio (4.14.x-ti, 4.19.x-ti & mainline/bone kernel)
#uboot_overlay_pru=/lib/firmware/AM335X-PRU-UIO-00A0.dtbo
###
###Cape Universal Enable
enable_uboot_cape_universal=1
###
###Debug: disable uboot autoload of Cape
#disable_uboot_overlay_addr0=1
#disable_uboot_overlay_addr1=1
#disable_uboot_overlay_addr2=1
#disable_uboot_overlay_addr3=1
###
###U-Boot fdt tweaks... (60000 = 384KB)
#uboot_fdt_buffer=0x60000
###U-Boot Overlays###
cmdline=coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 quiet
#In the event of edid real failures, uncomment this next line:
#cmdline=coherent_pool=1M net.ifnames=0 lpj=1990656 rng_core.default_quality=100 quiet video=HDMI-A-1:1024x768#60e
##enable Generic eMMC Flasher:
##make sure, these tools are installed: dosfstools rsync
#cmdline=init=/opt/scripts/tools/eMMC/init-eMMC-flasher-v3.sh
Some help on can or socketCAN will be found here for the BBB or other family board:
https://www.beyondlogic.org/adding-can-to-the-beaglebone-black/
Also:
https://github.com/craigpeacock/CAN-Examples
These examples are a bit older and I have noticed that the Linux Distro on the BBB, if getting it from bbb.io/latest-images , is going through an overhaul.
For instance, I have noticed that the config-pin utility still works but that some of their overlays and DeviceTrees for the BBB peripherals are being sent into mainline, esp. for the BBAI.
When those examples do not help you configure the, and those examples are not mine but I figured they would help, socketCAN on Linux, please reply. I am working on a simple CAN interface from those examples and while using Linux is helpful, some things like the Device Trees are in a mode of change and I think this goes along w/ config-pin too.
For instance...
If you go to their forum at forum.beagleboard.org, you will see some people from GSOC working on examples from config-pin utilities to PRU cores which will be helpful for people getting into the shared memory, microcontroller game.
Here is the config-pin idea I found on their forum page:
https://forum.beagleboard.org/t/beagle-config-logs/30174
I have set up CAN on debian 10.3 (Buster) on beaglebone black.
I left uEnv.txt as default and issued these commands (as root) to enable CAN:
config-pin p9.24 can
config-pin p9.26 can
ip link set can1 up type can bitrate 1000000
candump can1
Once this is working, you can automate this setup using uEnv.txt and /etc/network/interfaces as descibed here - https://www.beyondlogic.org/adding-can-to-the-beaglebone-black/ and here - https://www.thomas-wedemeyer.de/beaglebone-canbus-python.html
If this doesnt work, I'd suggest ensuring there is no other software or updates installed that could be messing this up - try a fresh debian install on another SD card, and ensuring the hardware - the bus driver and wiring is ok.
I solved BBB CAN problem just by changing transceiver board into another one.
Don't use cjmcu-230 CAN transceiver board. I use the one from Waveshare. https://www.waveshare.com/sn65hvd230-can-board.htm
Both CAN transceiver board use same SN65HVD230 chip, but it seems that there is some ground pin circuit issue inside the cjmcu-230 board.
Hope you don't waste your time if you have this issue.

I can't find configuration file of Wireshark on Centos7

I installed the Wireshark on Centos7. But I can not find the configuration files. By default it should be in "/usr/local/share/Wireshark", but didn't it exist.
~[root#localhost share]# tshark -v
TShark 1.10.14 (Git Rev Unknown from unknown)
Copyright 1998-2015 Gerald Combs <gerald#wireshark.org> and contributors.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Compiled (64-bit) with GLib 2.54.2, with libpcap, with libz 1.2.7, with POSIX
capabilities (Linux), without libnl, with SMI 0.4.8, with c-ares 1.10.0, with
Lua 5.1, without Python, with GnuTLS 3.3.26, with Gcrypt 1.5.3, with MIT
Kerberos, without GeoIP.
Running on Linux 3.10.0-862.el7.x86_64, with locale en_US.UTF-8, with libpcap
version 1.5.3, with libz 1.2.7.
Intel(R) Core(TM) i7-6700HQ CPU # 2.60GHz
Built using gcc 4.8.5 20150623 (Red Hat 4.8.5-36).
[root#localhost ~]# cd /usr/local/share/
[root#localhost share]# ll
total 0
drwxr-xr-x. 2 root root 28 Mar 14 16:39 applications
drwxr-xr-x. 2 root root 6 Apr 11 2018 info
drwxr-xr-x. 21 root root 243 Feb 11 2019 man
[root#localhost ~]# ll /etc/ | grep wireshark
[root#localhost ~]#
To check where tshark config files are stored, use tshark -G folders. As an example, this is what I see on my system:
ubuntu$ tshark -G folders
Temp: /tmp
Personal configuration: /home/rj/.config/wireshark
Global configuration: /usr/share/wireshark
System: /etc
Program: /usr/bin
Personal Plugins: /home/rj/.local/lib/wireshark/plugins/2.6
Global Plugins: /usr/lib/x86_64-linux-gnu/wireshark/plugins/2.6
Personal Lua Plugins: /home/rj/.local/lib/wireshark/plugins
Global Lua Plugins: /usr/lib/x86_64-linux-gnu/wireshark/plugins
Extcap path: /usr/lib/x86_64-linux-gnu/wireshark/extcap
MaxMind database path: /usr/share/GeoIP
MaxMind database path: /var/lib/GeoIP
MaxMind database path: /usr/share/GeoIP
More information is available on using wireshark configuration files as well as official docs, which detail the types.

uwsgi upgrade to python3.7 to fix ImportError: No module named 'encodings'

Honestly, I have no idea what I am doing, so be gentle with me. I am trying to use uwsgi to run my django application on a aws ubuntu instance. I have a virtual environment with python3.7 running, but when I try to run uwsgi. I get this in the logs:
*** Starting uWSGI 2.0.14 (64bit) on [Sun Jan 5 14:51:32 2020] ***
compiled with version: 5.4.0 20160609 on 20 October 2016 05:56:34
os: Linux-4.4.0-109-generic #132-Ubuntu SMP Tue Jan 9 19:52:39 UTC 2018
nodename: ip-172-31-41-139
machine: x86_64
clock source: unix
detected number of CPU cores: 1
current working directory: /
detected binary path: /usr/local/bin/uwsgi
!!! no internal routing support, rebuild with pcre support !!!
uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) ***
chdir() to /home/ubuntu/web/graff
*** WARNING: you are running uWSGI without its master process manager ***
your processes number limit is 3804
your memory page size is 4096 bytes
detected max file descriptor number: 1024
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uwsgi socket 0 bound to UNIX address /home/ubuntu/web/graffuwsgi.sock fd 3
Python version: 3.5.2 (default, Oct 8 2019, 13:06:37) [GCC 5.4.0 20160609]
Set PythonHome to /home/ubuntu/.virtualenvs/graff
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ImportError: No module named 'encodings'
Here is my uwsgi.conf
# file: /etc/init/graffuwsgi.conf
description "uWSGI server for graff"
start on runlevel [2345]
stop on runlevel [!2345]
respawn
exec /usr/local/bin/uwsgi --home /home/ubuntu/web/graff/ --socket /home/ubuntu/web/graffuwsgi.sock --chmod-socket=666 --module=graff.wsgi --pythonpath /home/ubuntu/web -H /home/ubuntu/.virtualenvs/graff --logto /home/ubuntu/web/logs/graffuwsgi.log --chdir=/home/ubuntu/web/graff --chmod-socket=666
It seems like python3.5 just doesn't work anymore. I feel like I've had to replace python3.5 with 3.7 in several places lately to fix various bugs, and I have it in my head that if I can get uwsgi to run python3.7 instead of 3.5 then that will solve this error too. Anyway, any help is much appreciated.
Looks like your uwsgi is compiled with different python version, make sure you compile with python 3.5
PYTHON=python3.5 uwsgi --build-plugin "/usr/src/uwsgi/plugins/python python35"
mv python35_plugin.so /usr/lib/uwsgi/plugins/python35_plugin.so
chmod 644 /usr/lib/uwsgi/plugins/python35_plugin.so
you can follow this guide:
https://www.paulox.net/2017/04/04/how-to-use-uwsgi-with-python3-6-in-ubuntu/
The source of error is PythonHome (pyhome, venv, home) setting.
See at the official Python docs on Environment variables
Is your path /home/ubuntu/.virtualenvs/graff suited for Python requirements?
In short:
Use pythonpath (pp) and let the system to find modules.
You can set several repeated options in your uwsgi config to custom modules search, eg:
pythonpath = /opt/web2py/
pythonpath = /opt/anaconda/lib/python3.9/site-packages/
So, I had the same error. And it was fixed by editing uwsgi vassal config.
I thing the core of problem that virtual envs are created with symlinks or have some inner relative paths, so an isolated process inside uwsgi could not find modules.

Resources