Skip to main content

GP2040-CE Web Configurator

Select the button labels to be displayed in the usage guide:

GP2040

GP2040-CE contains a built-in web-based configuration application which can be started by holding S2 when plugging your controller into a PC or by holding S2 + B3 + B4 for five seconds while the controller is plugged in. Then access http://192.168.7.1 in a web browser to begin configuration.

Supported

  • Windows
  • Mac
  • Linux
  • SteamOS
  • iPadOS

Not fully supported

  • Android
  • iOS
note

Not all Android and iOS devices are suppored for web-config. In our testing some Android devices will work and others will not. Most USB-C based iOS devices will work. We do not keep a list of which devices do and do not work.

Trouble accessing web-config on a Windows PC

If your Windows PC cannot access the built-in web-config of your GP2040-CE controller, try the following steps:

1 - Ensure you are in web-config mode

  • Ensure your controller is in Web-Config mode.
  • Verify the USB cable is securely connected and supports data transfer (some cables are power-only).

2 - Try a Different Browser

  • Some browsers may block local device access. Try Chrome, Firefox, or Edge.
  • Disable browser extensions (like ad-blockers) temporarily.

3 - Check the URL

4 - Disable Firewall/Antivirus Temporarily

  • Security software may block communication. Test with protections temporarily disabled.

5 - Try Another USB Port/PC

  • Test on a different port or on a different computer.

6 - Try restarting your computer

  • Try restarting your computer.
warning

In addition to the above there may be issues with drivers installed on your PC. Due to the risk of causing system issues the GP2040-CE team will no assist in drvier based issues or recommend drivers be installed / uninstalled.

note

Linux distributions may need some extra steps to access the web configurator; see Linux Setup.

Linux Setup

When you plug in your controller while holding S2, you should see it connect in the kernel logs if you run dmesg:

[   72.291060] usb 1-3: new full-speed USB device number 12 using xhci_hcd
[ 72.450166] usb 1-3: New USB device found, idVendor=cafe, idProduct=4028, bcdDevice= 1.01
[ 72.450172] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 72.450174] usb 1-3: Product: TinyUSB Device
[ 72.450176] usb 1-3: Manufacturer: TinyUSB
[ 72.450177] usb 1-3: SerialNumber: 123456
[ 72.484285] rndis_host 1-3:1.0 usb0: register 'rndis_host' at usb-0000:06:00.1-3, RNDIS device, 02:02:84:6a:96:00
[ 72.498630] rndis_host 1-3:1.0 enp6s0f1u3: renamed from usb0

In the above example, enp6s0f1u3 is the virtual Ethernet interface for your controller. If you don't see the first rndis_host line, make sure CONFIG_USB_NET_RNDIS_HOST is compiled in your kernel or as a module.

The web configurator is automatically running, you just need to be able to reach it. Some configurations automatically set up the route, so try http://192.168.7.1 in your browser now. If it doesn't load, try configuring an IP for the interface manually via: sudo ifconfig enp6s0f1u3 192.168.7.2.

Whether or not you had to add an IP manually, you should end up with a route something like this:

% ip route
default via 10.0.5.1 dev enp5s0 proto dhcp src 10.0.5.38 metric 2
10.0.5.0/24 dev enp5s0 proto dhcp scope link src 10.0.5.38 metric 2
192.168.7.0/24 dev enp6s0f1u3 proto kernel scope link src 192.168.7.2 <---

Then the configurator should be reachable in your browser.