Monday, 24 December 2018

Chia sẻ file nhạc/ảnh/video trong mạng nội bộ (UPnP/DLNA)

Thời điểm này, mỗi gia đình đều có vài thiết bị "thông minh", TiVi, điện thoại, laptop, máy chơi game PlayStation... mà dữ liệu nhạc / film có thể nằm mỗi cái ở một chỗ. Có nhiều cách để chia sẻ file giữa các thiết bị này với nhau mà người ta đã làm cả chục năm nay rồi.

Một cái tên trông không đẹp cho lắm nhưng đã dùng thì rất tiện: UPnP (Universal Plug and Play)

Universal Plug and Play is a set of networking protocols that permits networked devices, such as personal computers, printers, Internet gateways, Wi-Fi access points and mobile devices to seamlessly discover each other's presence on the network and establish functional network services for data sharing, communications, and entertainment.

UPnP là một bộ giao thức mạng cho phép các thiết bị trong mạng tự khám phá ra nhau và chia sẻ dữ liệu.
Giao thức mạng tức là như HTTP, FTP ...

DLNA (Digital Living Network Alliance) là tên một "guideline"/bộ hướng dẫn, bao gồm nhiều thứ và có cả UPnP.

Cài đặt:
sudo apt install -y minidlna

(UPnP có sẵn trên Windows, khỏi cài đặt gì)


$ whatis minidlna
minidlna (1)         - lightweight DLNA/UPnP-AV server
Cấu hình server này rất đơn giản, ghi đường dẫn tới thư mục muốn chia sẻ trong file  /etc/minidlna.conf rồi restart là xong.

Các client muốn dùng được phải có hỗ trợ UPnP, DLNA. Trên mọi hề điều hành phổ biến có thể dùng Kodi (XBMC) - kèm cả server UPnP luôn. Trên Android chương trình này sẽ chạy fullscreen nên hợp với xem film, có thể dùng Foobar2000 để nghe nhạc. Foobar2000 có trên IOS.
VLC có hỗ trợ nhưng chạy không ổn định trên Ubuntu lẫn Android, load lúc được lúc không.

minidlna dùng port UDP 1900, port 8200 chạy HTTP server hiển thị thông tin status

$ lsof -i4 -n -p `pgrep minidlna`  | grep minidlnad |  grep :

minidlnad 6004 minidlna    8u     IPv4  97305      0t0      UDP 239.255.255.250:1900
minidlnad 6004 minidlna    9u     IPv4  97306      0t0      TCP *:8200 (LISTEN)
minidlnad 6004 minidlna   10u     IPv4  97311      0t0      UDP 192.168.1.111:53042


Minidlna dùng 7.5 MB RAM, tốn ít CPU và có thể chạy trên Raspberry Pi.
$ ps xau | grep minidlna
minidlna  6004  0.0  0.0 352176  7560 ?        Ssl  08:06   0:00 /usr/sbin/minidlnad -f /etc/minidlna.conf -P /run/minidlna/minidlna.pid

Tưởng tượng cả gia đình đều có thể nghe nhạc xem film mọi lúc, không cần tải film/nhạc trên từng thiết bị, chỉ với 1 em raspberrypi chạy điện 2.5V - gọn - nhẹ - tiết kiệm.

Hết.
HVN at https://pymi.vn and https://www.familug.org