Thay thế firmware cho router wifi bằng OpenWrt

Giả sử bạn có router wifi mà bỗng một ngày bạn thấy nó hơi nghèo nàn, thiếu tính năng mới lạ, hay đơn giản là bạn thấy cuộc sống quá yên bình nên muốn chọc ngoáy cái router đôi chút, như bạn từng thử cài hàng tá phần mềm lên PC, thay đổi cấu hình này nọ thành một mớ hỗn độn rồi phải cài mới lại hệ điều hành. Nếu bạn cảm thấy như thế thì có thứ rất đáng cho bạn cài vào router và thử đấy.

Cài phần mềm lên router à, cũng được nữa sao? Tôi đâu thấy có màn hình, bàn phím trên router đâu?

Đa số các router wifi hiện nay thực ra cũng là là một máy tính thu gọn (ngoại trừ router của Cisco thì tôi không chắc lắm vì chưa đụng vào bao giờ). Nó cũng có mainboard, CPU, RAM, chip wifi. Nó không có ổ cứng vì người ta không cần lưu trữ dữ liệu trên nó, thay vào đó nó dùng bộ nhớ Flash (tương tự điện thoại di động) để chứa các chương trình. Chúng cũng chạy hệ điều hành và hầu hết hệ điều hành này là phiên bản tỉa bớt của Linux. Nhà sản xuất cắt bỏ và thay đổi nhiều thành phần của Linux để đảm bảo dung lượng nhỏ và không để "cửa" cho người dùng chọc ngoái nhiều. Vì không có màn hình bàn phím nên ta chỉ có thể điều khiển máy tính thu gọn này từ một máy khác (PC của ta), thông qua giao diện web hay giao diện dòng lệnh (telnet).

Như đã nói ở trên, hệ điều hành trong router đã bị cắt gọt nhiều, nên nhiều người mua là dân công nghệ (đúng nghĩa là dân công nghệ chứ không phải dân ưa mua sắm đồ chơi công nghệ đắt tiền để thể hiện) cảm thấy gò bó trong giới hạn của phần mềm mà nhà sản xuất cung cấp trong router. Họ muốn tùy ý phát triển chức năng của router mà không phải tốn tiền mua router đắt hơn. Họ thấy phần mềm có sẵn bị lỗi và muốn phần mềm mới hơn có thể khắc phục lỗi ấy. Thế là OpenWrt ra đời.

OpenWrt là một firmware thay thế dành cho router wifi. Được phát triển từ Linux, nhưng không bị cắt gọt nên OpenWrt có hầu như đủ các phần mềm (loại không có giao diện đồ họa) mà bạn có thể bắt gặp trên PC. OpenWrt cũng là một bản phân phối Linux ngang hàng với các cái tên như Ubuntu, Fedora. Bạn có thể truy cập SSH vào một router cài OpenWrt, dùng vim để chỉnh sửa một file cấu hình trên đó, hay cài samba và truy cập vô thư mục chia sẻ của một máy Windows khác trong mạng.

OpenWrt_LUCI

Cài đặt OpenWrt như thế nào?

OpenWrt được cung cấp dưới dạng bản thành phẩm chỉ việc tải về rồi cài, và dưới dạng mã nguồn để bạn tự build thành bản thành phẩm cho router của bạn.

Do router wifi có nhiều chủng loại khác nhau, mỗi loại có chủng loại phần cứng, cách sắp đặt, phối hợp khác nhau nên bản thành phẩm của OpenWrt cũng phải thay đổi tùy theo nó sẽ được cài lên router nào. Trước khi quyết định cài OpenWrt cho router của mình, bạn cần đọc trong danh sách chủng loại router được hỗ trợ tại đây: http://wiki.openwrt.org/toh/start. Nếu router của bạn không có trong danh sách, lý do có thể là nhóm phát triển router chưa nghiên cứu, vọc tới loại router đó, hay họ chưa có trong tay driver của chip cấu tạo nên router, hay do router đó có bộ nhớ flash quá "keo" không đủ để chứa OpenWrt.

Bản cài đặt thành phẩm có thể download từ trang chi tiết về loại router của bạn. Chẳng hạn tôi muốn cài cho TP-Link WR841ND thì tôi lấy link download ở đây: http://wiki.openwrt.org/toh/tp-link/tl-wr841nd

Do router mỗi loại mỗi khác nên cách cài OpenWrt cũng thay đổi tùy theo. Đa số dòng router của TP-Link ta có thể cài OpenWrt trực tiếp qua giao diện web của router, tại mục Firmware Upgrade (vốn dùng để cập nhật firmware "chính hãng")

Install_OpenWrt_TP-Link

(Nghe có vẻ tôi đang PR cho hãng router này, nhưng thực ra không phải. Đơn giản chỉ là router hãng này không những rẻ nhất, dễ bắt gặp và mua nhất trong các thương hiệu mà còn rất thân thiện với OpenWrt như bạn thấy, khi nó cho phép cài OpenWrt qua giao diện web, chúng cũng sử dụng loại phần cứng có sẵn driver nguồn mở để tạo thuận lợi cho nhóm phát triển OpenWrt). Bên cạnh TP-Link, nhiều dòng router của Netgear cũng cho phép cài theo kiểu này.

Một số dòng router, bạn phải làm gián đoạn quá trình khởi động của router để vào một chế độ đặc biệt, tại đó một chương trình TFTP client (tương tự như FTP nhưng chức năng cơ bản hơn) được cài sẵn, cho phép kết nối đến TFTP server cài trên máy tính cá nhân của bạn và truyền firmware OpenWrt vào qua đường mạng LAN. Đồng thời lúc đó dịch vụ telnet của router cũng được khởi động cho phép bạn truy cập vào bằng dòng lệnh và dùng một lệnh đặc biệt để tiến hành ghi OpenWrt lên bộ nhớ.

Cách vào chế độ đặc biệt này (chế độ bảo trì - maintenance mode) cũng tùy theo loại router. Có loại chỉ cần bấm vào một nút đặc biệt trên thân router, theo một chuỗi nhịp nào đó, có loại bạn phải căn thời gian, chớp một giai đoạn ngắn khi khởi động để kết nối telnet vào router và gõ một phím theo quy định để giữ router đứng lại ở chế độ này (không thì nó sẽ tiếp tục khởi động vào chế độ bình thường)

Một số dòng router, bạn phải tháo bung vỏ, dùng cáp serial kết nối vào router và thực thi các lệnh tương tự như trên (nhưng qua serial terminal chứ không phải telnet). Sự éo le ở đây là cổng serial trên router khác với cổng serial (người dùng Windows thường gọi là cổng COM) trên PC nên bạn không thể dùng trực tiếp cáp serial thông thường. Khi đó có 2 giải pháp: Một là dùng loại cáp serial dành cho điện thoại phổ thông (không phải smartphone) như DKU-2 của Nokia và chỉ sử dụng 1 vài đầu dây trong đó, hai là bạn tự lắp mạch TTL-converter để chuyển đổi điện áp và dùng kèm cáp serial dành cho PC. Để thao tác với lệnh qua đường serial, bạn có thể dùng chương trình GtkTerm hay CuteCom

DKU-5

GtkTerm-OpenWrt

Một số dòng, oái oăm hơn khi chân cắm serial bị cắt bỏ khỏi board. Một số dòng thì cách vào chế độ bảo trì rất khắt khe, đòi hỏi bạn phải căn trúng thời gian và chớp đúng thời cơ.

Trên đây tôi đã giới thiệu qua về OpenWrt và nói sơ qua về cách cài đặt. Có vẻ phức tạp và dễ nản phải không? Tuy nhiên đừng quá lo vì chỉ một số dòng khó tính như vậy, còn loại rẻ nhất, dễ mua nhất thì lại cực dễ như tôi đã trình bày đầu tiên. Còn cho dù router của bạn thuộc loại khó tính, khiến bạn phải truy cập telnet hay phải hàn mạch để dùng cáp serial thì cái cảm giác trị được con router ương bướng cũng rất sướng. Bài tiếp theo tôi sẽ nói về cách build OpenWrt từ mã nguồn, khi bạn muốn hưởng những cập nhật mới nhất.

Các bạn cần trao đổi về OpenWrt, vui lòng tham gia nhóm Linux cho hệ thống nhúng trên Facebook.