Việc sử dụng Wi-Fi của khách sạn gần như luôn là một vấn đề nan giải. Việc đăng nhập vào một cổng thông tin không phải lúc nào cũng hoạt động bình thường trên mọi thiết bị – điện thoại, máy tính xách tay, máy tính bảng, máy đọc sách điện tử, đồng hồ, v.v. – rất dễ xảy ra lỗi, và đó là cách dễ dàng để vô tình cộng thêm phí internet đắt đỏ vào thời gian lưu trú tại khách sạn của bạn. Một số Wi-Fi của khách sạn chỉ cho phép một thiết bị duy nhất cho mỗi phòng! Hầu hết sẽ không cho phép các thiết bị của bạn giao tiếp với nhau, và nếu có, chúng có thể gây ra rủi ro bảo mật.
Bạn có thể sử dụng Raspberry Pi để kết nối với Wi-Fi của khách sạn một lần, sau đó phát một mạng riêng cho tất cả các thiết bị của mình. Với thiết lập này, bạn sẽ không phải cấu hình Wi-Fi cho tất cả các thiết bị của mình mỗi khi đến khách sạn. Thay vào đó, bạn chỉ cần thiết lập chúng một lần, và sau đó mỗi khi đến khách sạn, các thiết bị của bạn sẽ tự động kết nối với mạng của Raspberry Pi.
Chúng ta sẽ bắt đầu bằng cách thiết lập điểm phát sóng Wifi hotspot tại nhà.
Cần có
- Bo mạch Raspberry Pi (chắc chắn rồi)
- Bộ nguồn cho Raspberry Pi (adaptor)
- Thẻ MicroSD
- Bộ Adapter chuyển microSD sang SD nếu máy bạn chỉ có đầu SD
- USB Wi-Fi adapter
Để cài đặt hệ điều hành vào thẻ nhớ, bạn cần:
- Một máy tính còn hoạt động
Chọn đúng bo mạch Raspberry Pi
Với bo mạch càng nhanh, mạnh thì hiệu năng bạn nhận được càng cao. Trong bài viết này, chúng tôi dùng Raspberry Pi 4 bản 2GB RAM.
Bạn nên chọn Raspberry Pi có mô-đun Wi-Fi tích hợp, vì bạn sẽ cần hai thiết bị Wi-Fi để lưu trữ điểm phát sóng Wi-Fi của khách sạn: một để kết nối với mạng khách sạn và một để phát mạng tới các thiết bị khác của bạn, đa số các dòng Pi từ Pi 3 trở lên là có Wifi tích hợp sẵn.
Chọn đúng USB Wifi
Hầu hết các bộ điều hợp Wi-Fi USB có hỗ trợ trình điều khiển cho OS Linux đều có thể sử dụng được.
Đối với hướng dẫn này, chúng tôi đã sử dụng USB Wifi sóng chuẩn 802.11 b/g/n 2,4 GHz chipset MediaTek MT7601U.

Bạn có thể dùng USB Wifi có râu để tăng độ phát sóng ra xa nếu muốn.

Cấu hình cho Raspberry Pi
Để bắt đầu, bạn cần cài đặt hệ điều hành cho Rasperry Pi
Bước chọn OS cho Pi, bạn chọn Raspberry Pi OS Lite (32-bit) để chạy không cần chuột và bàn phím
Trong suốt quá trình tùy chỉnh, bạn thiết lập như sau:
- Nhập hostname theo ý bạn (chúng tôi gợi ý pi-hotspot cho hướng dẫn này)
- Nhập username và password; Bạn cần nó để xác thực sau khi cài xong
- Nhấn vào ô Configure wireless LAN để Pi có thể tự động kết nối Wifi
- Nhập thông tin Wifi bao gồm SSID (name) và password;
- Nhấn luôn vào ô Enable SSH để bạn có thể kết nối Pi mà không cần chuột với bàn phím gắn trực tiếp vào Pi


Cài đặt Raspberry Pi
Rút nguồn Raspberry Pi, cắm thẻ nhớ , cắm USB Wifi vào. Cuối cùng, cắm nguồn cho Raspberry Pi và Pi sẽ tự động bật.
Điều khiển từ xa Raspberry Pi
SSH cho phép bạn điều khiển từ xa Raspberry Pi, sử dụng chính chuột và bàn phím từ máy tính bạn đang điều khiển.
Kết nối bằng SSH
Sử dụng chương trình có hỗ trợ SSH như Puty, sau đó kết nối với Raspberry Pi của bạn và nhập user name pasword đã cấu hình ở trên:
$ ssh <username>@pi-hotspot.local
$ ssh <username>@pi-hotspot.local
The authenticity of host 'pi-hotspot.local (fd81:b8a1:261d:1:acd4:610c:b069:ac16)' can't be established.
ED25519 key fingerprint is SHA256:s6aWAEe8xrbPmJzhctei7/gEQitO9mj2ilXigelBm04.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/
[fingerprint])? yes
Warning: Permanently added 'pi-hotspot.local' (ED25519) to the list of known hosts.
<username>@pi-hotspot.local's password:
Linux pi-hotspot 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr 3 17:24:16 BST 2023 aarch64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Oct 24 09:41:00 2023
<username>@pi-hotspot:~ $
Cấu hình hotspot
Khi Raspberry Pi đã chạy, đây là lúc ta biến nó thành hotspot Wifi
Xác định USB Wi-Fi adapter
Đầu tiên, chúng ta cần xác định USB adapter. Chạy lệnh sau để nhận dạng thiết bị Wifi với Network Manager CLI:
$ nmcli device
Bạn sẽ thấy các dòng giá trị sau xuất hiện:
DEVICE TYPE STATE CONNECTION
wlan1 wifi connected Example Wi-Fi
lo loopback connected (externally) lo
wlan0 wifi disconnected --
p2p-dev-wlan0 wifi-p2p disconnected --
eth0 ethernet unavailable --
Trong kết quả đầu ra ở trên, mô-đun Wi-Fi USB, wlan1, được kết nối với mạng Wi-Fi có tên “Ví dụ Wi-Fi”. Thiết bị Wi-Fi tích hợp, wlan0, hiện không được sử dụng, do đó trạng thái hiện tại là “đã ngắt kết nối”.
Nếu Raspberry Pi của bạn có mô-đun Wi-Fi tích hợp, theo mặc định, nó sẽ hiển thị là wlan0. Mô-đun Wi-Fi đầu tiên bạn kết nối sẽ hiển thị là wlan1, và các bộ điều hợp tiếp theo sẽ hiển thị là wlan2, wlan3, v.v. Tùy thuộc vào cấu hình cụ thể của bạn, Raspberry Pi có thể kết nối với mạng bằng bộ điều hợp USB hoặc mô-đun Wi-Fi tích hợp.
Tạo mạng điểm phát sóng hotspot Wifi
Tiếp theo, chúng ta sẽ sử dụng mô-đun Wi-Fi tích hợp để phát sóng mạng điểm phát sóng. Chạy lệnh sau để tạo điểm phát sóng, thay thế các ký tự và bằng tên và mật khẩu điểm phát sóng tùy chọn của bạn:
$ sudo nmcli device wifi hotspot ssid <hotspot name> password <hotspot password> ifname wlan0
Sau khi tạo mạng điểm phát sóng, điểm phát sóng của bạn sẽ tự động được kích hoạt.
Tiếp theo, hãy kết nối với mạng Wi-Fi điểm phát sóng từ máy tính thường dùng của bạn. Tìm mạng có SSID trùng với tên điểm phát sóng bạn đã chọn ở bước trước. Sử dụng mật khẩu bạn cũng đã cung cấp ở bước đó để xác thực.
Sau đó, kết nối với Raspberry Pi bằng SSH:
$ ssh <username>@pi-hotspot.local
Và chạy lệnh sau để xem các kết nối hiện tại:
$ nmcli connection
Bạn sẽ thấy các dòng giá trị sau xuất hiện:
NAME UUID TYPE DEVICE
Hotspot 69d77a03-1cd1-4ec7-bd78-2eb6cd5f1386 wifi wlan0
lo f0209dd9-8416-40a0-971d-860d3ff3501b loopback lo
Ethernet 4c8098c7-9f7d-4e3e-a27a-70d54235ec9a ethernet --
Example 1 f0c4fbcc-ac88-4791-98c2-e75685c70e9f wifi --
Example 2 9c6098a7-ac88-40a0-5ac2-b75695c70e9e wifi --
Kết nối có tên Hotspot đại diện cho mạng hotspot mới của bạn. Các kết nối trong Ví dụ 1 và Ví dụ 2 ở trên đại diện cho các kết nối Wi-Fi đã lưu nhưng không hoạt động.
Cấu hình mạng hotspot
Hãy cấu hình mạng hotspot của bạn để tự động phát sóng mỗi khi Raspberry Pi khởi động. Khi Raspberry Pi khởi động, nó sẽ khởi động bất kỳ kết nối nào đã bật tính năng tự động kết nối với mức ưu tiên cao nhất. Để đảm bảo hotspot của bạn luôn khởi động khi khởi động, chúng ta sẽ bật tính năng tự động kết nối cho hotspot và cấu hình mức ưu tiên cao hơn bất kỳ kết nối nào khác.
Chạy lại lệnh kết nối nmcli ở trên và sao chép UUID cho mạng hotspot của bạn từ bảng. Sau đó, chạy lệnh sau để xem thuộc tính kết nối cho mạng hotspot của bạn, thay thế chỗ giữ chỗ bằng UUID cho hotspot của bạn:
$ nmcli connection show <hotspot UUID>
Giá trị hiển thị sẽ chứa rất nhiều thuộc tính mô tả mạng điểm phát sóng của bạn. Tuy nhiên, hiện tại chúng ta chỉ quan tâm đến hai thuộc tính sau:
connection.autoconnect: no
connection.autoconnect-priority: 0
Chạy lệnh sau để thay đổi thuộc tính ưu tiên và tự động kết nối cho điểm phát sóng của bạn, thay thế chỗ giữ chỗ bằng UUID cho điểm phát sóng mà bạn đã sao chép vào bảng tạm trước đó:
$ sudo nmcli connection modify <hotspot UUID> connection.autoconnect yes connection.autoconnect-priority 100
Nếu lệnh của bạn được thực thi thành công, chúng ta sẽ thấy các giá trị mới sau cho các thuộc tính đó khi chạy lại nmcli connection show :
connection.autoconnect: yes
connection.autoconnect-priority: 100
Cấu hình cổng kết nối (Hotspot portal)
Tiếp theo, hãy cấu hình một trang web cổng thông tin cho phép bạn dễ dàng kết nối Raspberry Pi với mạng Wi-Fi của khách sạn từ trình duyệt.
Cài đặt các công cụ sau:
$ sudo apt install python3-flask
Sau đó, chạy lệnh sau để tạo một thư mục nơi chúng ta có thể tạo cổng thông tin của mình, có tên là wifi-portal:
$ mkdir ~/wifi-portal
Sau đó, điều hướng đến thư mục cổng thông tin:
$ cd ~/wifi-portal
Mở app.py trong thư mục cổng thông tin, chứa logic cho trang web cổng thông tin:
$ sudo nano app.py
Sao chép và dán đoạn mã sau vào app.py:
from flask import Flask,request
import subprocess
app = Flask(__name__)
wifi_device = "wlan1"
@app.route('/')
def index():
result = subprocess.check_output(["nmcli", "--colors", "no", "-m", "multiline", "--get-value", "SSID", "dev", "wifi", "list", "ifname", wifi_device])
ssids_list = result.decode().split('\n')
dropdowndisplay = f"""
<!DOCTYPE html>
<html>
<head>
<title>Wifi Control</title>
</head>
<body>
<h1>Wifi Control</h1>
<form action="/submit" method="post">
<label for="ssid">Choose a WiFi network:</label>
<select name="ssid" id="ssid">
"""
for ssid in ssids_list:
only_ssid = ssid.removeprefix("SSID:")
if len(only_ssid) > 0:
dropdowndisplay += f"""
<option value="{only_ssid}">{only_ssid}</option>
"""
dropdowndisplay += f"""
</select>
<p/>
<label for="password">Password: <input type="password" name="password"/></label>
<p/>
<input type="submit" value="Connect">
</form>
</body>
</html>
"""
return dropdowndisplay
@app.route('/submit',methods=['POST'])
def submit():
if request.method == 'POST':
print(*list(request.form.keys()), sep = ", ")
ssid = request.form['ssid']
password = request.form['password']
connection_command = ["nmcli", "--colors", "no", "device", "wifi", "connect", ssid, "ifname", wifi_device]
if len(password) > 0:
connection_command.append("password")
connection_command.append(password)
result = subprocess.run(connection_command, capture_output=True)
if result.stderr:
return "Error: failed to connect to wifi network: <i>%s</i>" % result.stderr.decode()
elif result.stdout:
return "Success: <i>%s</i>" % result.stdout.decode()
return "Error: failed to connect."
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=80)
Nhấn Ctrl+X, rồi Y, và cuối cùng là Enter để lưu tệp đã chỉnh sửa bằng nano.
Tiếp theo, hãy cấu hình Raspberry Pi của bạn để tự động chạy cổng Wi-Fi sau khi khởi động. Chạy lệnh sau để mở tab cron, một công cụ lập lịch Linux:
$ crontab -e
Nhập 1 để sử dụng trình soạn thảo văn bản nano để chỉnh sửa lịch cron của bạn. Sau đó, thêm dòng sau vào tệp, thay thế phần giữ chỗ bằng tên người dùng tài khoản quản trị Raspberry Pi của bạn:
@reboot sudo python3 /home/<username>/wifi-portal/app.py
Nhấn Ctrl+X, sau đó nhấn Y và cuối cùng là Enter để lưu tệp đã chỉnh sửa bằng nano.
Và nhập lệnh sau để khởi động lại Raspberry Pi của bạn:
$ sudo reboot
Bây giờ bạn đã sẵn sàng kết nối với bất kỳ mạng Wi-Fi nào của khách sạn!
Sử dụng điểm phát sóng
Giờ đây, bạn đã thiết lập xong điểm phát sóng Wi-Fi của khách sạn. Mỗi khi đến khách sạn, hãy lặp lại các bước sau:
- Cắm Raspberry Pi vào.
- Kết nối máy tính thường dùng của bạn với kết nối Wi-Fi của điểm phát sóng.
- Kết nối thiết bị với điểm phát sóng và truy cập http://pi-hotspot.local. Chọn mạng Wi-Fi và nhập mật khẩu nếu cần.

Trên thiết bị đã kết nối với điểm phát sóng, hãy mở cổng thông tin tại http://captive.apple.com. Xác thực để kết nối mạng điểm phát sóng Raspberry Pi với internet.
Lần đầu tiên sử dụng thiết bị khác với điểm phát sóng, bạn sẽ phải thiết lập kết nối Wi-Fi theo cách thủ công. Nhưng sau đó, thiết bị sẽ tự động kết nối với điểm phát sóng.
Các bước tiếp theo
Giờ bạn đã có điểm phát sóng Wi-Fi riêng được định tuyến qua mạng Wi-Fi của khách sạn, hãy tận dụng nó! Xem phim, lướt web và thư giãn.