base on Feature-rich wifi hotspot creator for Linux which provides both GUI and command-line interface. It is also able to create a hotspot using the same wifi card which is connected to an AP already ( Similar to Windows 10). ## Linux Wifi Hotspot <!-- [![Build Status](https://travis-ci.com/lakinduakash/linux-wifi-hotspot.svg?branch=master)](https://travis-ci.com/lakinduakash/linux-wifi-hotspot) --> ![Build](https://github.com/lakinduakash/linux-wifi-hotspot/actions/workflows/build.yml/badge.svg) <!--[![Gitter](https://badges.gitter.im/linux-wihotspot/community.svg)](https://gitter.im/linux-wihotspot/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) --> [![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Flakinduakash%2Flinux-wifi-hotspot.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Flakinduakash%2Flinux-wifi-hotspot?ref=badge_shield) ### What's new * Use aa-complain instead of complain to fix the permission issue for dnsmasq * Fix some 5Ghz band not working issue * Compatible with iw 6.7 #### Project Update Hi everyone — I've been inactive on this project for a while due to other commitments. I'm now actively looking for contributors and maintainers to help keep the project alive and growing. If you're interested in contributing — whether it's fixing bugs, improving documentation, or developing new features — please open an issue to introduce yourself. I'm also open to adding trusted collaborators with commit access who demonstrate consistent contributions and interest. Thanks for being part of the community and keeping Linux-WiFi-Hotspot going! ### Features * Share your wifi like in Windows - Use wifi and enable hotspot at the same time. * Share a wifi access point from any network interface * [Create a hotspot with VPN](#vpn-hotspot) - The hotspot has the traffic tunnelled through VPN. Useful for devices with no VPN app support like TV or gaming consoles. * Share wifi via QR code * MAC filter * View connected devices * Includes Both command line and GUI. * Support both 2.4GHz and 5GHz (Need to be compatible with your wifi adapter). Ex: You have connected to the 5GHz network and share a connection with 2.4GHz. * Customise wifi Channel, Change MAC address, etc. * Hide SSID * customize gateway IP address * Enable IEEE 80211n, IEEE 80211ac and IEEE 80211ax modes ![screenshot](docs/sc4.png) ### Command line help and documentation Read [Command line help and documentation here](src/scripts/README.md). If you only need the command line without GUI run `make install-cli-only` as the root user. ### Notes - Sometimes there are troubles with **5Ghz bands** due to some vendor restrictions. If you cannot start the hotspot while you are connected to the 5Ghz band, Unselect **Auto** and select **2.4Ghz** in frequency selection. - If any problems with **RealTeK Wifi Adapters** see [this](docs/howto/realtek.md) - **Unable to allocate IP: firewalld issue:** Please check for potential fixes: [#209](https://github.com/lakinduakash/linux-wifi-hotspot/issues/209) [#166](https://github.com/lakinduakash/linux-wifi-hotspot/issues/166) ## Installation #### Debian/Ubuntu Download the Debian package from the latest [release](https://github.com/lakinduakash/linux-wifi-hotspot/releases/latest) **OR** Good news! I was able to restore keys, new versions will be available via the PPA ```bash sudo add-apt-repository ppa:lakinduakash/lwh sudo apt update sudo apt install linux-wifi-hotspot ``` #### Arch based distributions Linux Wifi Hotspot is available as an [AUR package](https://aur.archlinux.org/packages/linux-wifi-hotspot/). You can install it manually or with your favorite AUR helper. For example, if you use `yay` you can do: `yay -S linux-wifi-hotspot` ### Fedora based distributions copr based repo is available for Fedora ```bash sudo dnf copr enable zinix01/linux-wifi-hotspot sudo dnf install linux-wifi-hotspot ``` ## Dependencies #### General * bash * util-linux (for getopt) * procps or procps-ng * hostapd * iproute2 * iw * iwconfig (you only need this if 'iw' can not recognize your adapter) * haveged (optional) _Make sure you have those dependencies by typing them in terminal. If any of dependencies fail install it using your distro's package manager_ #### For 'NATed' or 'None' Internet sharing method * dnsmasq * iptables #### To build from source * make * gcc and g++ * build-essential * pkg-config * gtk * libgtk-3-dev * libqrencode-dev (for qr code generation) * libpng-dev (for qr code generation) On Ubuntu or Debian install dependencies by, ```bash sudo apt install -y libgtk-3-dev build-essential gcc g++ pkg-config make hostapd libqrencode-dev libpng-dev ``` On Fedora/CentOS/Red Hat Enterprise Linux/Rocky Linux/Oracle Linux ```bash sudo dnf install -y gtk3-devel gcc gcc-c++ kernel-devel pkg-config make hostapd qrencode-devel libpng-devel ``` ## Installation git clone https://github.com/lakinduakash/linux-wifi-hotspot cd linux-wifi-hotspot #build binaries make #install sudo make install ## Uninstallation sudo make uninstall ## Running You can launch the GUI by searching for "Wifi Hotspot" in the Application Menu or using the terminal with: wihotspot <h2 id="vpn-hotspot">Create VPN Hotspot</h2> After connecting to VPN, Open `wihotspot` GUI. Select the virtual interface created by the VPN. In this case it is `tun0` ![image](docs/vpn.png) ## Run on Startup The `wihotspot` GUI uses `create_ap` to create and manage access points. This service and core logic were originally created by [@oblique](http://github.com/oblique), and are now maintained in this repository. Start the hotspot service on startup (using your saved configuration) with: systemctl enable create_ap ## Contributing If you found a bug or you have an idea about improving this make an issue. Even a small contribution makes the open source world more beautiful. Please read [CONTRIBUTING.md](CONTRIBUTING.md) for more info. ## Disclaimer <div>Icons made by <a href="https://www.freepik.com" title="Freepik">Freepik</a> from <a href="https://www.flaticon.com/" title="Flaticon">www.flaticon.com</a></div> ## Stargazers over time [![Stargazers over time](https://starchart.cc/lakinduakash/linux-wifi-hotspot.svg)](https://starchart.cc/lakinduakash/linux-wifi-hotspot) ## License FreeBSD Copyright (c) 2013, oblique Copyright (c) 2024, lakinduakash [![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Flakinduakash%2Flinux-wifi-hotspot.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Flakinduakash%2Flinux-wifi-hotspot?ref=badge_large) ", Assign "at most 3 tags" to the expected json: {"id":"10528","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"