Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

4.14 - Rpi 3B+ Compilation - Linker Errors #206

Open
mlinton opened this issue Apr 8, 2018 · 21 comments
Open

4.14 - Rpi 3B+ Compilation - Linker Errors #206

mlinton opened this issue Apr 8, 2018 · 21 comments

Comments

@mlinton
Copy link

mlinton commented Apr 8, 2018

Trying to build the patch for the 3B+ on a 3B+ using raspbian

Uname -anr:

Linux raspberrypi 4.14.30-v7+ #1102 SMP Mon Mar 26 16:45:49 BST 2018 armv7l GNU/Linux

Error:
Attempting to Make from the ./nexmon/patches/bcm43455c0/7_45_154/nexmon:

COLLECTING STATISTICS read /opt/nexmon/STATISTICS.md for more information
COMPILING src/injection.c => obj/injection.o (details: log/compiler.log)
COMPILING src/patch.c => obj/patch.o (details: log/compiler.log)
COMPILING src/version.c => obj/version.o (details: log/compiler.log)
COMPILING src/sendframe.c => obj/sendframe.o (details: log/compiler.log)
COMPILING src/monitormode.c => obj/monitormode.o (details: log/compiler.log)
COPYING UCODE /opt/nexmon/firmwares/bcm43455c0/7_45_154/ucode.bin => gen/ucode.bin
COMPRESSING UCODE gen/ucode.bin => gen/ucode_compressed.bin
GENERATING C FILE gen/ucode_compressed.bin => src/ucode_compressed.c
COMPILING src/ucode_compressed.c => obj/ucode_compressed.o (details: log/compiler.log)
COMPILING /opt/nexmon/patches/common/wrapper.c => obj/wrapper.o (details: log/compiler.log)
COMPILING /opt/nexmon/patches/common/argprintf.c => obj/argprintf.o (details: log/compiler.log)
COMPILING /opt/nexmon/patches/common/helper.c => obj/helper.o (details: log/compiler.log)
COMPILING /opt/nexmon/patches/common/udptunnel.c => obj/udptunnel.o (details: log/compiler.log)
COMPILING /opt/nexmon/patches/common/ucode_compression_code.c => obj/ucode_compression_code.o (details: log/compiler.log)
COMPILING /opt/nexmon/patches/common/objmem.c => obj/objmem.o (details: log/compiler.log)
COMPILING /opt/nexmon/patches/common/securitycookie.c => obj/securitycookie.o (details: log/compiler.log)
COMPILING /opt/nexmon/patches/common/radiotap.c => obj/radiotap.o (details: log/compiler.log)
COMPILING /opt/nexmon/firmwares/bcm43455c0/7_45_154/flashpatches.c => obj/flashpatches.o (details: log/compiler.log)
GENERATING LINKER FILE gen/nexmon.pre => gen/nexmon.ld
GENERATING LINKER FILE gen/nexmon.pre => gen/flashpatches.ld
GENERATING LINKER FILE gen/memory.ld
LINKING OBJECTS => gen/patch.elf (details: log/linker.log, log/linker.err)
Makefile:112: recipe for target 'gen/patch.elf' failed
make: *** [gen/patch.elf] Error 1

@matthiasseemoo
Copy link
Member

matthiasseemoo commented Apr 9, 2018 via email

@kwpi
Copy link

kwpi commented Apr 9, 2018

same problem here..

last 10 lines on linker.err

/home/pi/nexmon/buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-armv7l/bin/arm-none-eabi-ld: Removing unused section '.bss.securitycookie' in file 'obj/securitycookie.o'
/home/pi/nexmon/buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-armv7l/bin/arm-none-eabi-ld: Removing unused section '.comment' in file 'obj/securitycookie.o'
/home/pi/nexmon/buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-armv7l/bin/arm-none-eabi-ld: Removing unused section '.ARM.attributes' in file 'obj/securitycookie.o'
/home/pi/nexmon/buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-armv7l/bin/arm-none-eabi-ld: Removing unused section '.text.prepend_ethernet_ipv4_udp_header' in file 'obj/udptunnel.o'
/home/pi/nexmon/buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-armv7l/bin/arm-none-eabi-ld: Removing unused section '.text.udpnprintf' in file 'obj/udptunnel.o'
/home/pi/nexmon/buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-armv7l/bin/arm-none-eabi-ld: Removing unused section '.text.udpprintf' in file 'obj/udptunnel.o'
/home/pi/nexmon/buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-armv7l/bin/arm-none-eabi-ld: Removing unused section '.data.ethernet_ipv4_udp_header' in file 'obj/udptunnel.o'
/home/pi/nexmon/buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-armv7l/bin/arm-none-eabi-ld: Removing unused section '.comment' in file 'obj/udptunnel.o'
/home/pi/nexmon/buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-armv7l/bin/arm-none-eabi-ld: Removing unused section '.ARM.attributes' in file 'obj/udptunnel.o'
/home/pi/nexmon/buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-armv7l/bin/arm-none-eabi-ld: error: no memory region specified for loadable section `.text.wlc_sendctl'

@TheCoder3156
Copy link

The RPi 3B+ has a different WiFi chip. That may be the problem.

@zjmulder
Copy link

zjmulder commented Apr 9, 2018

I'm also having this problem with the same specs and error file output. Seems like the 3B+ uses 43455, so OP is in the correct place?

The chip, that takes up most of the space underneath that metal shielding, is the Cypress CYW43455, with faster 802.11ac dual-band (2.4 and 5GHz) wireless LAN and Bluetooth 4.2. The Pi 3 used the Cypress CYW43438 chip, and 802.11n 2.4GHz wireless chip, as does the Pi Zero W.

Taken from: This blog

@matthiasseemoo
Copy link
Member

`.text.wlc_sendctl' is already available in the wrapper.c file. So it should have worked for you. Btw. I also updated the driver version for the Rpi3 and 0W to version 4.14.

@arashebadi
Copy link

I tested the new version, but I get the following errors:

COLLECTING STATISTICS read /home/pi/nexmon/STATISTICS.md for more information
COMPILING src/version.c => obj/version.o (details: log/compiler.log)
GENERATING LINKER FILE gen/nexmon.pre => gen/nexmon.ld
GENERATING LINKER FILE gen/nexmon.pre => gen/flashpatches.ld
LINKING OBJECTS => gen/patch.elf (details: log/linker.log, log/linker.err)
GENERATING MAKE FILE gen/nexmon.pre => gen/nexmon.mk
GENERATING MAKE FILE gen/nexmon.pre => gen/flashpatches.mk
APPLYING FLASHPATCHES gen/flashpatches.mk => brcmfmac43455-sdio.bin (details: log/flashpatches.log)
APPLYING PATCHES gen/nexmon.mk => brcmfmac43455-sdio.bin (details: log/patches.log)
BUILDING DRIVER for kernel 4.9 brcmfmac_4.9.y-nexmon/brcmfmac.ko (details: log/driver.log)
make[1]: *** /lib/modules/4.9.80-v7+/build: No such file or directory. Stop.
Makefile:45: recipe for target 'brcmfmac.ko' failed
make: *** [brcmfmac.ko] Error 2

When I am checking my Raspberrypi (3B+), I have

pi@raspberrypi:/lib/modules $ uname -r
4.9.80-v7+
pi@raspberrypi:/lib/modules $ ls
4.14.30+ 4.14.30-v7+
pi@raspberrypi:/lib/modules $

Do you have any suggestion how to fix these errors?

@matthiasseemoo
Copy link
Member

matthiasseemoo commented Apr 9, 2018 via email

@kwpi
Copy link

kwpi commented Apr 9, 2018

new version works perfect on Rpi3b+
up and running!
thx you are a god!

@arashebadi
Copy link

@matthiasseemoo after rebooting (uname -r is 4.14.30-v7+), but I get the following error:

root@raspberrypi:/home/pi/nexmon/patches/bcm43455c0/7_45_154/nexmon# make
Makefile:4: /firmwares/bcm43455c0/7_45_154/definitions.mk: No such file or directory
make: *** No rule to make target '/firmwares/bcm43455c0/7_45_154/definitions.mk'. Stop.

Would you please help me how to fix this?
Thanks

@kwpi
Copy link

kwpi commented Apr 10, 2018

In the root directory of the repository: cd nexmon
Setup the build environment: source setup_env.sh

i think you skipped this part :)

@arashebadi
Copy link

@kwpi No I didn't skip that part of installation.
Any other suggestions?

@kwpi
Copy link

kwpi commented Apr 10, 2018

you need to type it again after the reboot..
so first do: sudo su and then: source setup_env.sh in the root folder of the repository...
after that you can go on with the installation..

@arashebadi
Copy link

@kwpi Thanks a lot, I think it is working now!

But I am still confused, I think other people also report that wlan0 can be seen by ifconfig but it can be seen by iwconfig. Is there any solution which can add wlan0 to list of ifconfig? or maybe add it as mon0?

My final goal is to use Scapy to send control WiFi frames by RPi in 5GHz channels, but right now Scapy cannot use wlna0 :(

Do you have any suggestion for me?

@matthiasseemoo
Copy link
Member

matthiasseemoo commented Apr 10, 2018 via email

@arashebadi
Copy link

Dear @matthiasseemoo,

I am trying but I am jumping from one error to another.

First question: Is RPi 3B+ uses bcm43455c0 or bcm43430a1?
I did all of the steps of installation by bcm43455c0, but I run the following command and I got 43430!! (I am lost)
pi@raspberrypi:~ $ sudo airmon-ng start wlan0
PHY Interface Driver Chipset
phy1 wlan0 brcmfmac Broadcom 43430

Second question: How I can fix the following problem?
This is the first step of having monitor mode.

pi@raspberrypi:~ $ sudo iw phy iw dev wlan0 info | gawk '/wiphy/ {printf "phy" $2}' interface add mon0 type monitor
command failed: Operation not supported (-95)
or
pi@raspberrypi:~ $ sudo iw phy phy1 interface add mon0 type monitorcommand failed: Operation not supported (-95)

Thanks a lot!

@mlinton
Copy link
Author

mlinton commented May 7, 2018

I get the same result after following the readme step by step on the RPI3b+, I'll try it again to confirm.

@mlinton
Copy link
Author

mlinton commented May 7, 2018

Ok so rebuilt the RPI3B+ from scratch, updated the kernel to 1.14.34-v7+, and ran through the installation instructions again fresh. No errors now while building the firmware, followed the instructions to get the driver to load on reboot, rebooted and added the monitor interface with the "iw phy phy0 interface add mon0 type monitor" as root. This successfully added the interface mon0.

Attempted to monitor the interface and I get an "SIOCSIFFLAGS: Operation not possible due to RF-kill" error, unblocked it with "sudo rfkill unblock all" and it now is monitoring as expected.

Still not sure why there were errors in the first place, but this is now working well.

UPDATE: ok so it's half working, but the interface is only able to record probe requests and isn't seeing any of the other data at all. Here is a quick extract from the dmesg log.

[    5.190048] brcmfmac: brcmf_c_preinit_dcmds: Firmware version = wl0: May  7 2018 18:44:45 version 7.45.154 (nexmon.org: 2.2.2-187-g2b6b-3) FWID 01-4fbe0b04
[    5.190732] brcmfmac: brcmf_c_preinit_dcmds: CLM version = API: 12.2 Data: 9.10.105 Compiler: 1.29.4 ClmImport: 1.36.3 Creation: 2018-03-09 18:56:28
[    5.471701] brcmfmac: brcmf_vif_add_validate: Attempt to add a MONITOR interface...
[    5.471726] brcmfmac: brcmf_mon_add_vif: brcmf_mon_add_vif called
[    5.471733] brcmfmac: brcmf_mon_add_vif: Adding vif "mon0"
[    5.709282] brcmfmac: brcmf_vif_add_validate: Attempt to add a MONITOR interface...
[    5.709295] brcmfmac: brcmf_vif_add_validate: ... there is already a monitor interface, returning EOPNOTSUPP
[    5.709303] brcmfmac: brcmf_cfg80211_add_iface: iface validation failed: err=-95
[    6.143816] uart-pl011 3f201000.serial: no DMA platform data
[    6.381119] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[    6.385802] brcmfmac: power management disabled
[    6.394187] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[    6.546925] Adding 102396k swap on /var/swap.  Priority:-2 extents:1 across:102396k SSFS
[   12.515482] Bluetooth: Core ver 2.22
[   12.515543] NET: Registered protocol family 31
[   12.515547] Bluetooth: HCI device and connection manager initialized
[   12.515563] Bluetooth: HCI socket layer initialized
[   12.515570] Bluetooth: L2CAP socket layer initialized
[   12.515588] Bluetooth: SCO socket layer initialized
[   12.551193] Bluetooth: HCI UART driver ver 2.3
[   12.551200] Bluetooth: HCI UART protocol H4 registered
[   12.551203] Bluetooth: HCI UART protocol Three-wire (H5) registered
[   12.551319] Bluetooth: HCI UART protocol Broadcom registered
[   12.737598] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[   12.737609] Bluetooth: BNEP filters: protocol multicast
[   12.737623] Bluetooth: BNEP socket layer initialized
[  105.154037] brcmfmac: nexmon_nl_ioctl_handler: NEXMON: nexmon_nl_ioctl_handler: Enter
[  105.154055] brcmfmac: nexmon_nl_ioctl_handler: NEXMON: nexmon_nl_ioctl_handler: 0058454e 20 36
[  105.154063] brcmfmac: nexmon_nl_ioctl_handler: NEXMON: nexmon_nl_ioctl_handler: calling brcmf_fil_cmd_data_get, cmd: 107
[  105.154569] brcmfmac: nexmon_nl_ioctl_handler: NEXMON: nexmon_nl_ioctl_handler: Exit
[  111.786659] device mon0 entered promiscuous mode
[  144.727090] brcmfmac: nexmon_nl_ioctl_handler: NEXMON: nexmon_nl_ioctl_handler: Enter
[  144.727106] brcmfmac: nexmon_nl_ioctl_handler: NEXMON: nexmon_nl_ioctl_handler: 0058454e 20 36
[  144.727115] brcmfmac: nexmon_nl_ioctl_handler: NEXMON: nexmon_nl_ioctl_handler: calling brcmf_fil_cmd_data_get, cmd: 107
[  144.727691] brcmfmac: nexmon_nl_ioctl_handler: NEXMON: nexmon_nl_ioctl_handler: Exit
[  151.405854] brcmfmac: nexmon_nl_ioctl_handler: NEXMON: nexmon_nl_ioctl_handler: Enter
[  151.405873] brcmfmac: nexmon_nl_ioctl_handler: NEXMON: nexmon_nl_ioctl_handler: 0058454e 20 36
[  151.405881] brcmfmac: nexmon_nl_ioctl_handler: NEXMON: nexmon_nl_ioctl_handler: calling brcmf_fil_cmd_data_set, cmd: 108
[  151.406427] brcmfmac: nexmon_nl_ioctl_handler: NEXMON: nexmon_nl_ioctl_handler: Exit

@mlinton mlinton closed this as completed May 7, 2018
@mlinton mlinton reopened this May 7, 2018
@chithanhhoang
Copy link

Following instruction from readme, I was able to make monitor mode works on RPI3+, good job Matthias!
I used the RPI3+ to recompile and I found the RPI3+ quite fast compare to my first RPI.
However, I notice the capture works only for legacy rates frames i.e. non 802.11n/ac rate, I do receive data frame but they are in legacy rate, confirming mlinton findings above.
Also when receiving a HT frame, I notice the sdio complained and everything just stop working after the error.
My AP is on a very clean channel 36 and using 802.11n 40BW, so all the frames are tx at 40 instead of 20, if I configure RPI3+ to 36/20 I can sniff all legacy frame except HT frames but not seeing any HT frame at 40BW (expected), I do see all the RTS/CTS and BlockAck but not data which are txed at 40Mhz.
As soon as I set the radio to 36/40 (nexutil -k36/40), sdio complained, I repeated several times and found the current code cannot rx HT frame?!
I repeat the test in 2.4 where mostly traffic are at 20Mhz and I do see the same sdio err.
Maybe we need to fix sdio to handle.
The error is from brcmf_sdio_readframes()
brcmf_err("%s: glom superframe w/o "
"descriptor!\n", func);

@RonSwartz
Copy link

I know this isn't the place and im sure ppl may get annoyed by me but im at the ends of my rope.
I've been trying to do this on my own for 2 month's with just installing a fully working kali linux on my raspberry pi 3 b+ with monitor mode just so i can start learning about all kali has to offer. Coming from windows and having a learning disability has made this teaching myself a challenge.
Im autistic so when i get stuck on something I'll keep beating my head against the wall till i figure it out but i can't so now im just depressed. Ive never found anything im interested in in till i found the magic of computer's and i hope some day to learn programming but im about to give up because i can't even install a working image or find thing's in terminal. Befor the rasperry i did a lot of reading on what kali can do so i know if i could get it installed properly i can learn it and maybe some day i could have a job.
At the moment i have no hope of a future. Can't communicate with ppl face to face so who would hire me. Ill end up in some home or instantiation. Even if i end up not being able to meet my dreams at lest i could feel hope for a while if someone will please help me. Every one i ask ignores me. Wont give me the time of day so as a last resort i will ask here then just give up.

@ZaraZia
Copy link

ZaraZia commented Nov 13, 2023

hink other people also report that wlan0 can be seen by ifconfig but it can be seen by iwconfig. Is there any solution which can add wlan0

genuine us moment

@SomewhatAwake
Copy link

SomewhatAwake commented Dec 6, 2023

im getting this exact error, but in a different context, on an amd64 version, and trying to make firmware for my phone, yet it just returns this error.
Here are the last few lines of linker.err
/home/cole/nexmon/buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-x86/bin/arm-none-eabi-ld: Removing unused section '.text.tinflate_write_objmemx' in file 'obj/ucode_compression_code.o'

/home/cole/nexmon/buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-x86/bin/arm-none-eabi-ld: Removing unused section '.text.tinflate_read_objmemx' in file 'obj/ucode_compression_code.o'

/home/cole/nexmon/buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-x86/bin/arm-none-eabi-ld: Removing unused section '.text.wlc_ucode_write_compressed_args' in file 'obj/ucode_compression_code.o'

/home/cole/nexmon/buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-x86/bin/arm-none-eabi-ld: Removing unused section '.text.wlc_ucodex_write_compressed_args' in file 'obj/ucode_compression_code.o'

/home/cole/nexmon/buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-x86/bin/arm-none-eabi-ld: Removing unused section '.data.vasip_bin_len' in file 'obj/vasip.o'

/home/cole/nexmon/buildtools/gcc-arm-none-eabi-5_4-2016q2-linux-x86/bin/arm-none-eabi-ld: error: no memory region specified for loadable section `.text.printf'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

10 participants