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

Windows on ARM, Support? #2

Open
sidd-kishan opened this issue Aug 15, 2022 · 9 comments
Open

Windows on ARM, Support? #2

sidd-kishan opened this issue Aug 15, 2022 · 9 comments

Comments

@sidd-kishan
Copy link

Please connect the RPI PICO and the just the tcp server module to test the rndis compatibility as it will open the path to port the entire project to a low powered devices Window on ARM devices.

@luigifcruz
Copy link
Owner

Hi, unfortunately, I don't have access to a Windows machine to set this up. I would be happy to accept any PR featuring these changes.

@karelv
Copy link

karelv commented Jan 31, 2023

I just build the tcp_server and upload it to my RP2040. Then my windows 10 machine does not have the driver...
image
image
But windows cannot find it....

@luigifcruz
Copy link
Owner

I recently changed the code to use NCM (Network Control Model). According to Microsoft's documentation, this should be compatible with Windows 11 but not Windows 10.

@karelv
Copy link

karelv commented Feb 1, 2023

Sorry, I have no windows 11 machine...
Is it simple to configure to use another model which is compatible with Windows 10?

@karelv
Copy link

karelv commented Feb 1, 2023

This is from august last year, it seems most users are still on Windows 10.
https://techcommunity.microsoft.com/t5/windows-11/why-users-are-not-upgrading-to-windows-11-is-windows-11-a/m-p/3611663

@luigifcruz
Copy link
Owner

I understand. According to this thread, it might be possible to compile the driver for Windows 10. But this would require the driver to be signed. I'm not familiar with this process. Another alternative is to change NCM to ECM_RNDIS here. But I have no idea if it will work.

@karelv
Copy link

karelv commented Feb 1, 2023

Cool, so went to that file, I swapped the 0 and the 1....
Then I created a build2 directory, and build again.
However the linker is not happy. Could you have a look?

[100%] Building C object apps/tcp_server/CMakeFiles/tcp_server.dir/__/__/pico-extras/lib/lwip/src/apps/http/fs.c.obj
[100%] Building C object apps/tcp_server/CMakeFiles/tcp_server.dir/__/__/pico-extras/src/rp2_common/lwip/lwip_arch.c.obj
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: CMakeFiles/iperf_server.dir/main.c.obj: in function `linkoutput_fn':
main.c:(.text.linkoutput_fn+0x1c): undefined reference to `tud_network_can_xmit'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: main.c:(.text.linkoutput_fn+0x2e): undefined reference to `tud_network_xmit'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: CMakeFiles/iperf_server.dir/main.c.obj: in function `main':
main.c:(.text.startup.main+0x94): undefined reference to `tud_network_recv_renew'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: CMakeFiles/iperf_server.dir/__/__/pico-sdk/lib/tinyusb/src/device/usbd.c.obj: in function `tud_init':
usbd.c:(.text.tud_init+0xa0): undefined reference to `netd_init'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: usbd.c:(.text.tud_init+0xd4): undefined reference to `netd_init'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: CMakeFiles/iperf_server.dir/__/__/pico-sdk/lib/tinyusb/src/device/usbd.c.obj: in function `tud_task':
usbd.c:(.text.tud_task+0x2e0): undefined reference to `netd_reset'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: usbd.c:(.text.tud_task+0x2f2): undefined reference to `netd_reset'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: usbd.c:(.text.tud_task+0x348): undefined reference to `netd_open'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: usbd.c:(.text.tud_task+0x354): undefined reference to `netd_xfer_cb'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: usbd.c:(.text.tud_task+0x364): undefined reference to `netd_reset'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: usbd.c:(.text.tud_task+0x66c): undefined reference to `netd_control_xfer_cb'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: usbd.c:(.text.tud_task+0x7de): undefined reference to `netd_reset'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: usbd.c:(.text.tud_task+0x7f0): undefined reference to `netd_open'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: usbd.c:(.text.tud_task+0x8c0): undefined reference to `netd_reset'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: CMakeFiles/iperf_server.dir/__/__/pico-sdk/lib/tinyusb/src/device/usbd.c.obj:(.rodata._usbd_driver+0x0): undefined reference to `netd_init'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: CMakeFiles/iperf_server.dir/__/__/pico-sdk/lib/tinyusb/src/device/usbd.c.obj:(.rodata._usbd_driver+0x4): undefined reference to `netd_reset'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: CMakeFiles/iperf_server.dir/__/__/pico-sdk/lib/tinyusb/src/device/usbd.c.obj:(.rodata._usbd_driver+0x8): undefined reference to `netd_open'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: CMakeFiles/iperf_server.dir/__/__/pico-sdk/lib/tinyusb/src/device/usbd.c.obj:(.rodata._usbd_driver+0xc): undefined reference to `netd_control_xfer_cb'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: CMakeFiles/iperf_server.dir/__/__/pico-sdk/lib/tinyusb/src/device/usbd.c.obj:(.rodata._usbd_driver+0x10): undefined reference to `netd_xfer_cb'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: CMakeFiles/piccolosdr.dir/main.c.obj: in function `linkoutput_fn':
main.c:(.text.linkoutput_fn+0x1c): undefined reference to `tud_network_can_xmit'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: main.c:(.text.linkoutput_fn+0x2e): undefined reference to `tud_network_xmit'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: CMakeFiles/piccolosdr.dir/main.c.obj: in function `main':
main.c:(.text.startup.main+0x1fe): undefined reference to `tud_network_recv_renew'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: CMakeFiles/piccolosdr.dir/__/__/pico-sdk/lib/tinyusb/src/device/usbd.c.obj: in function `tud_init':
usbd.c:(.text.tud_init+0xa0): undefined reference to `netd_init'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: usbd.c:(.text.tud_init+0xd4): undefined reference to `netd_init'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: CMakeFiles/piccolosdr.dir/__/__/pico-sdk/lib/tinyusb/src/device/usbd.c.obj: in function `tud_task':
usbd.c:(.text.tud_task+0x2e0): undefined reference to `netd_reset'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: usbd.c:(.text.tud_task+0x2f2): undefined reference to `netd_reset'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: usbd.c:(.text.tud_task+0x348): undefined reference to `netd_open'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: usbd.c:(.text.tud_task+0x354): undefined reference to `netd_xfer_cb'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: usbd.c:(.text.tud_task+0x364): undefined reference to `netd_reset'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: usbd.c:(.text.tud_task+0x66c): undefined reference to `netd_control_xfer_cb'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: usbd.c:(.text.tud_task+0x7de): undefined reference to `netd_reset'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: usbd.c:(.text.tud_task+0x7f0): undefined reference to `netd_open'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: usbd.c:(.text.tud_task+0x8c0): undefined reference to `netd_reset'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: CMakeFiles/piccolosdr.dir/__/__/pico-sdk/lib/tinyusb/src/device/usbd.c.obj:(.rodata._usbd_driver+0x0): undefined reference to `netd_init'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: CMakeFiles/piccolosdr.dir/__/__/pico-sdk/lib/tinyusb/src/device/usbd.c.obj:(.rodata._usbd_driver+0x4): undefined reference to `netd_reset'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: CMakeFiles/piccolosdr.dir/__/__/pico-sdk/lib/tinyusb/src/device/usbd.c.obj:(.rodata._usbd_driver+0x8): undefined reference to `netd_open'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: CMakeFiles/piccolosdr.dir/__/__/pico-sdk/lib/tinyusb/src/device/usbd.c.obj:(.rodata._usbd_driver+0xc): undefined reference to `netd_control_xfer_cb'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: CMakeFiles/piccolosdr.dir/__/__/pico-sdk/lib/tinyusb/src/device/usbd.c.obj:(.rodata._usbd_driver+0x10): undefined reference to `netd_xfer_cb'
collect2: error: ld returned 1 exit status
make[2]: *** [apps/iperf_server/CMakeFiles/iperf_server.dir/build.make:1640: apps/iperf_server/iperf_server.elf] Error 1
make[1]: *** [CMakeFiles/Makefile2:2275: apps/iperf_server/CMakeFiles/iperf_server.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
collect2: error: ld returned 1 exit status
make[2]: *** [apps/piccolosdr/CMakeFiles/piccolosdr.dir/build.make:1640: apps/piccolosdr/piccolosdr.elf] Error 1
make[1]: *** [CMakeFiles/Makefile2:2384: apps/piccolosdr/CMakeFiles/piccolosdr.dir/all] Error 2
[100%] Linking CXX executable tcp_server.elf
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: CMakeFiles/tcp_server.dir/main.c.obj: in function `linkoutput_fn':
main.c:(.text.linkoutput_fn+0x1c): undefined reference to `tud_network_can_xmit'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: main.c:(.text.linkoutput_fn+0x2e): undefined reference to `tud_network_xmit'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: CMakeFiles/tcp_server.dir/main.c.obj: in function `main':
main.c:(.text.startup.main+0x6c): undefined reference to `tud_network_recv_renew'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: CMakeFiles/tcp_server.dir/__/__/pico-sdk/lib/tinyusb/src/device/usbd.c.obj: in function `tud_init':
usbd.c:(.text.tud_init+0xa0): undefined reference to `netd_init'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: usbd.c:(.text.tud_init+0xd4): undefined reference to `netd_init'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: CMakeFiles/tcp_server.dir/__/__/pico-sdk/lib/tinyusb/src/device/usbd.c.obj: in function `tud_task':
usbd.c:(.text.tud_task+0x2e0): undefined reference to `netd_reset'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: usbd.c:(.text.tud_task+0x2f2): undefined reference to `netd_reset'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: usbd.c:(.text.tud_task+0x348): undefined reference to `netd_open'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: usbd.c:(.text.tud_task+0x354): undefined reference to `netd_xfer_cb'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: usbd.c:(.text.tud_task+0x364): undefined reference to `netd_reset'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: usbd.c:(.text.tud_task+0x66c): undefined reference to `netd_control_xfer_cb'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: usbd.c:(.text.tud_task+0x7de): undefined reference to `netd_reset'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: usbd.c:(.text.tud_task+0x7f0): undefined reference to `netd_open'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: usbd.c:(.text.tud_task+0x8c0): undefined reference to `netd_reset'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: CMakeFiles/tcp_server.dir/__/__/pico-sdk/lib/tinyusb/src/device/usbd.c.obj:(.rodata._usbd_driver+0x0): undefined reference to `netd_init'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: CMakeFiles/tcp_server.dir/__/__/pico-sdk/lib/tinyusb/src/device/usbd.c.obj:(.rodata._usbd_driver+0x4): undefined reference to `netd_reset'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: CMakeFiles/tcp_server.dir/__/__/pico-sdk/lib/tinyusb/src/device/usbd.c.obj:(.rodata._usbd_driver+0x8): undefined reference to `netd_open'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: CMakeFiles/tcp_server.dir/__/__/pico-sdk/lib/tinyusb/src/device/usbd.c.obj:(.rodata._usbd_driver+0xc): undefined reference to `netd_control_xfer_cb'
/usr/lib/gcc/arm-none-eabi/11.2.0/../../../../arm-none-eabi/bin/ld: CMakeFiles/tcp_server.dir/__/__/pico-sdk/lib/tinyusb/src/device/usbd.c.obj:(.rodata._usbd_driver+0x10): undefined reference to `netd_xfer_cb'
collect2: error: ld returned 1 exit status
make[2]: *** [apps/tcp_server/CMakeFiles/tcp_server.dir/build.make:1624: apps/tcp_server/tcp_server.elf] Error 1
make[1]: *** [CMakeFiles/Makefile2:2329: apps/tcp_server/CMakeFiles/tcp_server.dir/all] Error 2
make: *** [Makefile:91: all] Error 2

Thanks.

@karelv
Copy link

karelv commented Feb 1, 2023

I found the definition of the first missing reference:
pico-sdk/lib/tinyusb/src/class/net/ncm_device.c
But I'm not familiar with the CMakefile system, how can I add that file into the build?

@luigifcruz
Copy link
Owner

luigifcruz commented Jun 25, 2023 via email

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

3 participants