xairy / raw-gadget

USB Raw Gadget — a low-level interface for the Linux USB Gadget subsystem
350 stars 37 forks source link

`make: *** [Makefile:7: default] Error 2` #27

Closed Marvin-Brouwer closed 2 years ago

Marvin-Brouwer commented 2 years ago

Hi,

I'm having the hardest time to get my Raspi Zero to show up as a USB. I found a couple of blogs pointing towards this github so I figured I'd try to install dummy_hcd since it is in fact missing in my system. I had some cpp issues with fallthrough, so now I've updated to the latest version of CPP.

If I now run make like this to make sure it uses the correct cpp version:

# #!/bin/bash

dir=$(pwd);
install_dir="/home/●●●●●/install/";
mod_dir="/lib/modules/$(uname -r)";
cpp_dir="/opt/gcc-10.1.0/bin";

echo -e "\nBaking dummy_hcd";
sudo ln -s "$mod_dir" "./build";
cd "${install_dir}/git/raw-gadget/dummy_hcd";
sudo make CC="${cpp_dir}/gcc-10.1" CPP="${cpp_dir}/g++-10.1" CXX="${cpp_dir}/g++-10.1" LD="${cpp_dir}/g++-10.1";
cd "${mod_dir}/build";
sudo "./insmod.sh";

cd "$dir";

I still get the following error:

make -C /lib/modules/4.19.97+/build M=/usr/src/linux-headers-4.19.97+/dummy_hcd SUBDIRS=/usr/src/linux-headers-4.19.97+/dummy_hcd modules
make[1]: Entering directory '/usr/src/linux-headers-4.19.97+'
  CC [M]  /usr/src/linux-headers-4.19.97+/dummy_hcd/dummy_hcd.o
/usr/src/linux-headers-4.19.97+/dummy_hcd/dummy_hcd.c: In function ‘dummy_enable’:
/usr/src/linux-headers-4.19.97+/dummy_hcd/dummy_hcd.c:556:4: error: ‘fallthrough’ undeclared (first use in this function)
  556 |    fallthrough;
      |    ^~~~~~~~~~~
/usr/src/linux-headers-4.19.97+/dummy_hcd/dummy_hcd.c:556:4: note: each undeclared identifier is reported only once for each function it appears in
/usr/src/linux-headers-4.19.97+/dummy_hcd/dummy_hcd.c: In function ‘dummy_timer’:
/usr/src/linux-headers-4.19.97+/dummy_hcd/dummy_hcd.c:1971:4: error: ‘fallthrough’ undeclared (first use in this function)
 1971 |    fallthrough;
      |    ^~~~~~~~~~~
/usr/src/linux-headers-4.19.97+/dummy_hcd/dummy_hcd.c: In function ‘dummy_hub_control’:
/usr/src/linux-headers-4.19.97+/dummy_hcd/dummy_hcd.c:2148:4: error: ‘fallthrough’ undeclared (first use in this function)
 2148 |    fallthrough;
      |    ^~~~~~~~~~~
make[2]: *** [scripts/Makefile.build:310: /usr/src/linux-headers-4.19.97+/dummy_hcd/dummy_hcd.o] Error 1
make[1]: *** [Makefile:1522: _module_/usr/src/linux-headers-4.19.97+/dummy_hcd] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-4.19.97+'
make: *** [Makefile:7: default] Error 2

Do you have any suggestions on what I can try to debug this some more?

xairy commented 2 years ago

Hi,

I think the RPi kernel is just old and does not define the fallthrough pesudo-keyword.

You can try adding the definition into dummy_hcd.c:

#if __has_attribute(__fallthrough__)
# define fallthrough                    __attribute__((__fallthrough__))
#else
# define fallthrough                    do {} while (0)  /* fallthrough */
#endif

Thanks!

Marvin-Brouwer commented 2 years ago

The make file is giving me this now:

 In function ‘dummy_enable’:
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:618:6: warning: missing terminating " character
  618 |      "non-bulk ep %s
      |      ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:619:1: warning: missing terminating " character
  619 | ", _ep->name);
      | ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:626:24: warning: missing terminating " character
  626 |  dev_dbg(udc_dev(dum), "enabled %s (ep%d%s-%s) maxpacket %d stream %s
      |                        ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:627:1: warning: missing terminating " character
  627 | ",
      | ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:674:24: warning: missing terminating " character
  674 |  dev_dbg(udc_dev(dum), "disabled %s
      |                        ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:675:1: warning: missing terminating " character
  675 | ", _ep->name);
      | ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:735:24: warning: missing terminating " character
  735 |  dev_dbg(udc_dev(dum), "ep %p queue req %p to %s, len %d buf %p
      |                        ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:736:1: warning: missing terminating " character
  736 | ",
      | ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:801:5: warning: missing terminating " character
  801 |     "dequeued req %p from %s, len %d buf %p
      |     ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:802:1: warning: missing terminating " character
  802 | ",
      | ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:985:35: warning: missing terminating " character
  985 |  return scnprintf(buf, PAGE_SIZE, "%s
      |                                   ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:986:1: warning: missing terminating " character
  986 | ", dum->driver->function);
      | ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:1020:31: warning: missing terminating " character
 1020 |   dev_err(dummy_dev(dum_hcd), "Unsupported driver max speed %d
      |                               ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:1021:1: warning: missing terminating " character
 1021 | ",
      | ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:1150:22: warning: missing terminating " character
 1150 |  dev_dbg(&pdev->dev, "%s
      |                      ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:1151:1: warning: missing terminating " character
 1151 | ", __func__);
      | ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:1162:22: warning: missing terminating " character
 1162 |  dev_dbg(&pdev->dev, "%s
      |                      ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:1163:1: warning: missing terminating " character
 1163 | ", __func__);
      | ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:1270:31: warning: missing terminating " character
 1270 |   dev_err(dummy_dev(dum_hcd), "Stream id %d is out of range.
      |                               ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:1271:1: warning: missing terminating " character
 1271 | ",
      | ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:1314:31: warning: missing terminating " character
 1314 |   dev_err(dummy_dev(dum_hcd), "usb_device address has changed!
      |                               ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:1315:1: warning: missing terminating " character
 1315 | ");
      | ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:1651:25: warning: missing terminating " character
 1651 |   dev_dbg(udc_dev(dum), "set_address = %d
      |                         ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:1652:1: warning: missing terminating " character
 1652 | ",
      | ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:1828:31: warning: missing terminating " character
 1828 |   dev_err(dummy_dev(dum_hcd), "bogus device speed
      |                               ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:1829:1: warning: missing terminating " character
 1829 | ");
      | ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:1841:5: warning: missing terminating " character
 1841 |     "timer fired with no URBs pending?
      |     ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:1842:1: warning: missing terminating " character
 1842 | ");
      | ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:1884:5: warning: missing terminating " character
 1884 |     "no ep configured for urb %p
      |     ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:1885:1: warning: missing terminating " character
 1885 | ",
      | ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:1900:32: warning: missing terminating " character
 1900 |    dev_dbg(dummy_dev(dum_hcd), "ep %s halted, urb %p
      |                                ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:1901:1: warning: missing terminating " character
 1901 | ",
      | ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:1918:27: warning: missing terminating " character
 1918 |     dev_dbg(udc_dev(dum), "stale req = %p
      |                           ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:1919:1: warning: missing terminating " character
 1919 | ",
      | ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:1962:7: warning: missing terminating " character
 1962 |       "setup --> %d
      |       ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:1963:1: warning: missing terminating " character
 1963 | ",
      | ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:2061:31: warning: missing terminating " character
 2061 |   dev_dbg(dummy_dev(dum_hcd), "port status 0x%08x has changes
      |                               ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:2062:1: warning: missing terminating " character
 2062 | ",
      | ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:2148:7: warning: missing terminating " character
 2148 |       "supported for USB 3.0 roothub
      |       ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:2149:1: warning: missing terminating " character
 2149 | ");
      | ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:2160:32: warning: missing terminating " character
 2160 |    dev_dbg(dummy_dev(dum_hcd), "power-off
      |                                ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:2161:1: warning: missing terminating " character
 2161 | ");
      | ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:2191:5: warning: missing terminating " character
 2191 |     "USB 3.0 roothub.
      |     ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:2192:1: warning: missing terminating " character
 2192 | ");
      | ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:2265:7: warning: missing terminating " character
 2265 |       "supported for USB 2.0 roothub
      |       ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:2266:1: warning: missing terminating " character
 2266 | ");
      | ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:2280:7: warning: missing terminating " character
 2280 |       "supported for USB 2.0 roothub
      |       ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:2281:1: warning: missing terminating " character
 2281 | ");
      | ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:2290:7: warning: missing terminating " character
 2290 |       "supported for USB 3.0 roothub
      |       ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:2291:1: warning: missing terminating " character
 2291 | ");
      | ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:2304:8: warning: missing terminating " character
 2304 |        "no HNP yet!
      |        ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:2305:1: warning: missing terminating " character
 2305 | ");
      | ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:2320:7: warning: missing terminating " character
 2320 |       "supported for USB 2.0 roothub
      |       ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:2321:1: warning: missing terminating " character
 2321 | ");
      | ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:2370:6: warning: missing terminating " character
 2370 |      "supported for USB 2.0 roothub
      |      ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:2371:1: warning: missing terminating " character
 2371 | ");
      | ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:2381:6: warning: missing terminating " character
 2381 |      "USB 2.0 roothub
      |      ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:2382:1: warning: missing terminating " character
 2382 | ");
      | ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:2388:4: warning: missing terminating " character
 2388 |    "hub control req%04x v%04x i%04x l%d
      |    ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:2389:1: warning: missing terminating " character
 2389 | ",
      | ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:2406:36: warning: missing terminating " character
 2406 |  dev_dbg(&hcd->self.root_hub->dev, "%s
      |                                    ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:2407:1: warning: missing terminating " character
 2407 | ", __func__);
      | ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:2422:36: warning: missing terminating " character
 2422 |  dev_dbg(&hcd->self.root_hub->dev, "%s
      |                                    ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:2423:1: warning:
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:2793:22: warning: missing terminating " character
 2793 |  dev_dbg(&pdev->dev, "%s
      |                      ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:2794:1: warning: missing terminating " character
 2794 | ", __func__);
      | ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:2830:10: warning: missing terminating " character
 2830 |   pr_err("Number of emulated UDC must be in range of 1...%d
      |          ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:2831:1: warning: missing terminating " character
 2831 | ",
      | ^
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:2958: error: unterminated argument list invoking macro "dev_err"
 2958 | module_exit(cleanup);
      |
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:617:4: error: ‘dev_err’ undeclared (first use in this function); did you mean ‘_dev_err’?
  617 |    dev_err(udc_dev(dum), "Can't enable stream support on "
      |    ^~~~~~~
      |    _dev_err
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:617:4: note: each undeclared identifier is reported only once for each function it appears in
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:617:11: error: expected ‘;’ at end of input
  617 |    dev_err(udc_dev(dum), "Can't enable stream support on "
      |           ^
      |           ;
......
 2958 | module_exit(cleanup);
      |
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:617:4: error: expected declaration or statement at end of input
  617 |    dev_err(udc_dev(dum), "Can't enable stream support on "
      |    ^~~~~~~
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:617:4: error: expected declaration or statement at end of input
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:617:4: error: expected declaration or statement at end of input
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:611:3: error: label ‘done’ used but not defined
  611 |   goto done;
      |   ^~~~
At top level:
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:504:12: warning: ‘dummy_enable’ defined but not used [-Wunused-function]
  504 | static int dummy_enable(struct usb_ep *_ep,
      |            ^~~~~~~~~~~~
/home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.c:434:13: warning: ‘set_link_state’ defined but not used [-Wunused-function]
  434 | static void set_link_state(struct dummy_hcd *dum_hcd)
      |             ^~~~~~~~~~~~~~
make[2]: *** [scripts/Makefile.build:310: /home/●●●●●/install/git/raw-gadget/dummy_hcd/dummy_hcd.o] Error 1
make[1]: *** [Makefile:1522: _module_/home/●●●●●/install/git/raw-gadget/dummy_hcd] Error 2

I'm not a C++ programmer myself so I'm not really sure where to start with this. Could you maybe give me a pointer in the right direction to where I can figure this out myself?

xairy commented 2 years ago

Based on the error about dev_err not being defined, I think there is something wrong with your kernel headers. Otherwise, no idea.

Marvin-Brouwer commented 2 years ago

Right, that sounds like a lot of effort. Honestly, I don't necessarily need Raspbian. Do you maybe have another Debian based distro to recommend? At the end of the day I just want my raspi to emulate a USB or a preferably a CDROM when I plug it in.

xairy commented 2 years ago

I don't have any recommendation wrt a Debian distro for R Pi Zero.

But, on a related note, I never had any issues compiling the Dummy HCD module on R Pi Zero. Clean install + cloning this repo + building the module with the provided scripts always worked for me.

Marvin-Brouwer commented 2 years ago

Hmm that's interesting. All I did was: