[{"data":1,"prerenderedAt":913},["ShallowReactive",2],{"\u002Fnetwork\u002Fftp\u002Fglasses":3},{"id":4,"title":5,"body":6,"description":879,"extension":880,"meta":881,"navigation":282,"path":909,"seo":910,"stem":911,"__hash__":912},"networks\u002Fnetwork\u002Fftp\u002Fglasses.md","FTP Protocol on Smart Glasses — Server File Access for Wearable Computing",{"type":7,"value":8,"toc":842},"minimark",[9,14,18,21,25,30,33,49,53,64,67,71,78,92,95,106,110,114,117,180,185,217,221,224,314,317,332,336,339,345,351,355,359,366,380,383,387,390,404,408,411,422,426,571,581,585,589,592,603,607,610,624,628,631,648,652,656,670,674,688,692,706,710,724,728,739,743,747,761,765,782,786,789,803,807,838],[10,11,13],"h2",{"id":12},"ftp-protocol-specifics-for-smart-glasses","FTP Protocol Specifics for Smart Glasses",[15,16,17],"p",{},"This page covers the technical aspects of FTP protocol usage on smart glasses hardware — connection mechanics, server configuration for optimal glasses compatibility, and protocol-level considerations specific to wearable computing devices.",[15,19,20],{},"The FTP protocol itself is device-agnostic — it works identically whether the client is a desktop, phone, or glasses compute unit. The differences lie in the hardware constraints: input methods, display limitations, battery sensitivity, and WiFi reliability.",[10,22,24],{"id":23},"protocol-operation-on-glasses-hardware","Protocol Operation on Glasses Hardware",[26,27,29],"h3",{"id":28},"network-stack","Network Stack",[15,31,32],{},"Glasses compute units running Android have a standard TCP\u002FIP stack:",[34,35,36,40,43,46],"ul",{},[37,38,39],"li",{},"WiFi radio provides network connectivity (2.4\u002F5 GHz depending on hardware)",[37,41,42],{},"Standard socket connections support FTP's dual-channel design",[37,44,45],{},"Control channel (port 21) maintains session state",[37,47,48],{},"Data channels (passive mode dynamic ports) carry file transfers",[26,50,52],{"id":51},"ftp-session-flow-on-glasses","FTP Session Flow on Glasses",[54,55,60],"pre",{"className":56,"code":58,"language":59},[57],"language-text","1. TCP connect to server:21\n2. Receive server banner (220 response)\n3. USER username → 331 response\n4. PASS password → 230 response (logged in)\n5. TYPE I (binary mode) → 200 response\n6. PASV → 227 response (data port assigned)\n7. LIST (directory listing) → data transfer\n8. PASV → 227 (new data port)\n9. RETR filename → file download begins\n10. QUIT → session ends\n","text",[61,62,58],"code",{"__ignoreMap":63},"",[15,65,66],{},"Each operation follows standard FTP RFC 959 protocol. AnExplorer handles all protocol negotiation transparently.",[26,68,70],{"id":69},"passive-mode-requirement","Passive Mode Requirement",[15,72,73,77],{},[74,75,76],"strong",{},"Passive mode (PASV) is essential for glasses."," Reasons:",[34,79,80,83,86,89],{},[37,81,82],{},"Glasses are behind NAT (home router) — active mode needs server-to-client connection which NAT blocks",[37,84,85],{},"Glasses may have restricted incoming connection support",[37,87,88],{},"All modern FTP implementations should use passive mode anyway",[37,90,91],{},"AnExplorer defaults to passive mode",[15,93,94],{},"Server-side passive port configuration:",[34,96,97,100,103],{},[37,98,99],{},"Define a port range (e.g., 50000-51000)",[37,101,102],{},"Open this range in firewall if applicable",[37,104,105],{},"Configure masquerade address if server is behind NAT (for remote access)",[10,107,109],{"id":108},"server-configuration-for-glasses","Server Configuration for Glasses",[26,111,113],{"id":112},"recommended-server-settings","Recommended server settings",[15,115,116],{},"For optimal compatibility with glasses compute units:",[54,118,122],{"className":119,"code":120,"language":121,"meta":63,"style":63},"language-ini shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# vsftpd example configuration\npasv_enable=YES\npasv_min_port=50000\npasv_max_port=51000\nidle_session_timeout=120\ndata_connection_timeout=120\nutf8_filesystem=YES\nascii_upload_enable=NO\nlocal_enable=YES\n","ini",[61,123,124,132,138,144,150,156,162,168,174],{"__ignoreMap":63},[125,126,129],"span",{"class":127,"line":128},"line",1,[125,130,131],{},"# vsftpd example configuration\n",[125,133,135],{"class":127,"line":134},2,[125,136,137],{},"pasv_enable=YES\n",[125,139,141],{"class":127,"line":140},3,[125,142,143],{},"pasv_min_port=50000\n",[125,145,147],{"class":127,"line":146},4,[125,148,149],{},"pasv_max_port=51000\n",[125,151,153],{"class":127,"line":152},5,[125,154,155],{},"idle_session_timeout=120\n",[125,157,159],{"class":127,"line":158},6,[125,160,161],{},"data_connection_timeout=120\n",[125,163,165],{"class":127,"line":164},7,[125,166,167],{},"utf8_filesystem=YES\n",[125,169,171],{"class":127,"line":170},8,[125,172,173],{},"ascii_upload_enable=NO\n",[125,175,177],{"class":127,"line":176},9,[125,178,179],{},"local_enable=YES\n",[15,181,182],{},[74,183,184],{},"Key settings explained:",[34,186,187,193,199,205,211],{},[37,188,189,192],{},[74,190,191],{},"Passive mode enabled:"," Required for glasses behind NAT",[37,194,195,198],{},[74,196,197],{},"Generous timeouts:"," Glasses may be slower to navigate; avoid premature disconnection",[37,200,201,204],{},[74,202,203],{},"UTF-8 support:"," Handles international filenames",[37,206,207,210],{},[74,208,209],{},"Binary mode default:"," Media files must transfer as binary",[37,212,213,216],{},[74,214,215],{},"Local user authentication:"," Standard username\u002Fpassword access",[26,218,220],{"id":219},"user-account-setup","User account setup",[15,222,223],{},"Create a dedicated glasses user:",[54,225,229],{"className":226,"code":227,"language":228,"meta":63,"style":63},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Create user with restricted shell\nuseradd -m -s \u002Fusr\u002Fsbin\u002Fnologin glasses-sync\necho \"glasses-sync:secure-password\" | chpasswd\n\n# Create content directory\nmkdir -p \u002Fhome\u002Fglasses-sync\u002F{audio,assets,configs}\nchown -R glasses-sync:glasses-sync \u002Fhome\u002Fglasses-sync\n","bash",[61,230,231,237,256,278,284,289,300],{"__ignoreMap":63},[125,232,233],{"class":127,"line":128},[125,234,236],{"class":235},"sHwdD","# Create user with restricted shell\n",[125,238,239,243,247,250,253],{"class":127,"line":134},[125,240,242],{"class":241},"sBMFI","useradd",[125,244,246],{"class":245},"sfazB"," -m",[125,248,249],{"class":245}," -s",[125,251,252],{"class":245}," \u002Fusr\u002Fsbin\u002Fnologin",[125,254,255],{"class":245}," glasses-sync\n",[125,257,258,262,266,269,272,275],{"class":127,"line":140},[125,259,261],{"class":260},"s2Zo4","echo",[125,263,265],{"class":264},"sMK4o"," \"",[125,267,268],{"class":245},"glasses-sync:secure-password",[125,270,271],{"class":264},"\"",[125,273,274],{"class":264}," |",[125,276,277],{"class":241}," chpasswd\n",[125,279,280],{"class":127,"line":146},[125,281,283],{"emptyLinePlaceholder":282},true,"\n",[125,285,286],{"class":127,"line":152},[125,287,288],{"class":235},"# Create content directory\n",[125,290,291,294,297],{"class":127,"line":158},[125,292,293],{"class":241},"mkdir",[125,295,296],{"class":245}," -p",[125,298,299],{"class":245}," \u002Fhome\u002Fglasses-sync\u002F{audio,assets,configs}\n",[125,301,302,305,308,311],{"class":127,"line":164},[125,303,304],{"class":241},"chown",[125,306,307],{"class":245}," -R",[125,309,310],{"class":245}," glasses-sync:glasses-sync",[125,312,313],{"class":245}," \u002Fhome\u002Fglasses-sync\n",[15,315,316],{},"Or on NAS (GUI-based):",[318,319,320,323,326,329],"ol",{},[37,321,322],{},"Control Panel → Users → Create",[37,324,325],{},"Name: \"glasses-sync\"",[37,327,328],{},"Set permissions: read-only on media shares, read-write on upload shares",[37,330,331],{},"Enable FTP access for this user",[26,333,335],{"id":334},"folder-structure-optimization","Folder structure optimization",[15,337,338],{},"Design for limited-display navigation:",[54,340,343],{"className":341,"code":342,"language":59},[57],"\u002Fglasses-sync\u002F\n├── audio\u002F           ← First-level: content types\n│   ├── new\u002F         ← Second-level: status-based\n│   └── favorites\u002F   ← Quick access to known content\n├── ar-assets\u002F\n│   ├── current\u002F     ← Latest versions only\n│   └── archive\u002F     ← Old versions (rarely accessed)\n└── upload\u002F          ← For glasses-to-server transfers\n",[61,344,342],{"__ignoreMap":63},[15,346,347,350],{},[74,348,349],{},"Principle:"," Maximum 2 levels deep for glasses browsing. Keep \"latest\" or \"current\" folders at the top level for minimal navigation.",[10,352,354],{"id":353},"transfer-protocol-details","Transfer Protocol Details",[26,356,358],{"id":357},"binary-vs-ascii","Binary vs. ASCII",[15,360,361,362,365],{},"Always use ",[74,363,364],{},"binary transfer mode"," for glasses:",[34,367,368,371,374,377],{},[37,369,370],{},"Audio files (MP3, FLAC, AAC): must be binary",[37,372,373],{},"Images: must be binary",[37,375,376],{},"AR assets (GLB, textures): must be binary",[37,378,379],{},"Only plain text files could use ASCII (but binary works for text too)",[15,381,382],{},"AnExplorer sets binary mode by default. No user configuration needed.",[26,384,386],{"id":385},"resume-support-rest-command","Resume support (REST command)",[15,388,389],{},"FTP resume allows interrupted transfers to continue:",[34,391,392,395,398,401],{},[37,393,394],{},"If WiFi drops mid-transfer, reconnect and resume from last byte",[37,396,397],{},"Server must support REST command (most do)",[37,399,400],{},"Particularly important for glasses where WiFi stability may vary",[37,402,403],{},"AnExplorer attempts resume automatically for interrupted downloads",[26,405,407],{"id":406},"transfer-size-limits","Transfer size limits",[15,409,410],{},"No inherent FTP protocol size limit. Practical limits for glasses:",[34,412,413,416,419],{},[37,414,415],{},"Available storage on device (check before large transfers)",[37,417,418],{},"Battery life during transfer (large files take time)",[37,420,421],{},"WiFi session stability (longer transfers = more chance of interruption)",[10,423,425],{"id":424},"protocol-comparison-for-glasses","Protocol Comparison for Glasses",[427,428,429,451],"table",{},[430,431,432],"thead",{},[433,434,435,439,442,445,448],"tr",{},[436,437,438],"th",{},"Aspect",[436,440,441],{},"FTP",[436,443,444],{},"SFTP",[436,446,447],{},"SMB",[436,449,450],{},"WebDAV",[452,453,454,472,489,505,522,537,554],"tbody",{},[433,455,456,460,463,466,469],{},[457,458,459],"td",{},"Port",[457,461,462],{},"21",[457,464,465],{},"22",[457,467,468],{},"445",[457,470,471],{},"443\u002F80",[433,473,474,477,480,483,486],{},[457,475,476],{},"Encryption",[457,478,479],{},"None",[457,481,482],{},"Full",[457,484,485],{},"Optional",[457,487,488],{},"Optional (HTTPS)",[433,490,491,494,497,500,503],{},[457,492,493],{},"Authentication",[457,495,496],{},"USER\u002FPASS",[457,498,499],{},"Keys or password",[457,501,502],{},"User\u002Fpass",[457,504,502],{},[433,506,507,510,513,516,519],{},[457,508,509],{},"Streaming capable",[457,511,512],{},"No (download only)",[457,514,515],{},"No",[457,517,518],{},"Yes",[457,520,521],{},"Partial",[433,523,524,527,530,532,535],{},[457,525,526],{},"Resume support",[457,528,529],{},"Yes (REST)",[457,531,518],{},[457,533,534],{},"Limited",[457,536,521],{},[433,538,539,542,545,548,551],{},[457,540,541],{},"Best for",[457,543,544],{},"Bulk transfer",[457,546,547],{},"Secure transfer",[457,549,550],{},"Media streaming",[457,552,553],{},"Cloud access",[433,555,556,559,562,565,568],{},[457,557,558],{},"Firewall friendly",[457,560,561],{},"Moderate",[457,563,564],{},"Good",[457,566,567],{},"Poor (remote)",[457,569,570],{},"Excellent",[15,572,573,576,577,580],{},[74,574,575],{},"For glasses audio:"," SMB for streaming, FTP\u002FSFTP for downloads.\n",[74,578,579],{},"For glasses assets:"," FTP for bulk deployment, SFTP for sensitive content.",[10,582,584],{"id":583},"performance-on-glasses-hardware","Performance on Glasses Hardware",[26,586,588],{"id":587},"cpu-impact","CPU impact",[15,590,591],{},"FTP itself has minimal CPU overhead (unlike SFTP which requires encryption\u002Fdecryption). On glasses compute units with limited processing power, FTP's lower CPU demands mean:",[34,593,594,597,600],{},[37,595,596],{},"Faster transfers (no encryption bottleneck)",[37,598,599],{},"Less battery consumption during transfer",[37,601,602],{},"System remains responsive during downloads",[26,604,606],{"id":605},"memory-usage","Memory usage",[15,608,609],{},"FTP client memory footprint:",[34,611,612,615,618,621],{},[37,613,614],{},"Control channel: minimal (text-based protocol)",[37,616,617],{},"Data transfer: buffer size (typically 8-64 KB)",[37,619,620],{},"Directory listings: proportional to number of files",[37,622,623],{},"Total: negligible on modern Android devices (even compute units)",[26,625,627],{"id":626},"wifi-power-states","WiFi power states",[15,629,630],{},"Glasses compute units aggressively manage WiFi power:",[34,632,633,636,639,642],{},[37,634,635],{},"WiFi may sleep between user interactions",[37,637,638],{},"Active FTP transfer keeps WiFi awake",[37,640,641],{},"Idle connection may timeout if WiFi enters doze mode",[37,643,644,647],{},[74,645,646],{},"Solution:"," Keep interactions moving or download everything in one burst",[10,649,651],{"id":650},"troubleshooting-ftp-on-glasses","Troubleshooting FTP on Glasses",[26,653,655],{"id":654},"connection-refused","Connection refused",[34,657,658,661,664,667],{},[37,659,660],{},"Server not running or wrong port",[37,662,663],{},"Firewall blocking connection from glasses' IP",[37,665,666],{},"Server binding to wrong interface (localhost only)",[37,668,669],{},"Fix: Verify server status, check firewall rules",[26,671,673],{"id":672},"login-failed-530-response","Login failed (530 response)",[34,675,676,679,682,685],{},[37,677,678],{},"Wrong credentials",[37,680,681],{},"User not authorized for FTP access",[37,683,684],{},"Too many failed attempts (temporary lockout)",[37,686,687],{},"Fix: Verify credentials on another client, check server user permissions",[26,689,691],{"id":690},"passive-mode-failed-no-data-connection","Passive mode failed (no data connection)",[34,693,694,697,700,703],{},[37,695,696],{},"Passive port range not configured on server",[37,698,699],{},"Firewall blocking passive port range",[37,701,702],{},"Server returning wrong IP in PASV response (NAT issue)",[37,704,705],{},"Fix: Configure passive port range, verify firewall, set masquerade address",[26,707,709],{"id":708},"transfer-timeout","Transfer timeout",[34,711,712,715,718,721],{},[37,713,714],{},"WiFi dropped during transfer",[37,716,717],{},"Server data connection timeout too short",[37,719,720],{},"Battery saver killed WiFi",[37,722,723],{},"Fix: Increase server timeout, keep glasses active, check WiFi stability",[26,725,727],{"id":726},"file-corruption-after-transfer","File corruption after transfer",[34,729,730,733,736],{},[37,731,732],{},"ASCII mode used for binary file (always use binary)",[37,734,735],{},"Interrupted transfer without resume",[37,737,738],{},"Fix: Re-download in binary mode, verify file size matches server",[10,740,742],{"id":741},"security-best-practices","Security Best Practices",[26,744,746],{"id":745},"for-home-network-use","For home network use",[34,748,749,752,755,758],{},[37,750,751],{},"WPA2\u002FWPA3 WiFi encryption protects the wireless segment",[37,753,754],{},"FTP credentials travel encrypted within the WiFi tunnel",[37,756,757],{},"Dedicated user with minimal permissions limits exposure",[37,759,760],{},"Acceptable security for personal media sync",[26,762,764],{"id":763},"for-enterprise-use","For enterprise use",[34,766,767,773,776,779],{},[37,768,769,772],{},[74,770,771],{},"Use SFTP instead"," — full end-to-end encryption",[37,774,775],{},"Certificate-based authentication (no password to intercept)",[37,777,778],{},"Network segmentation (glasses on separate VLAN)",[37,780,781],{},"Audit logging on server for compliance",[26,783,785],{"id":784},"credential-storage-on-glasses","Credential storage on glasses",[15,787,788],{},"AnExplorer saves FTP credentials in the device's secure storage:",[34,790,791,794,797,800],{},[37,792,793],{},"Encrypted at rest on modern Android",[37,795,796],{},"Protected by device lock (PIN, pattern, biometric)",[37,798,799],{},"Consider: if glasses are lost, saved credentials could be accessed",[37,801,802],{},"Mitigation: limited-permission FTP account minimizes damage",[10,804,806],{"id":805},"related-guides","Related Guides",[34,808,809,817,824,831],{},[37,810,811,816],{},[812,813,815],"a",{"href":814},"\u002Ffeatures\u002Fftp-client\u002Fglasses","FTP Client for Smart Glasses"," — FTP feature overview",[37,818,819,823],{},[812,820,822],{"href":821},"\u002Fnetwork\u002Fsmb\u002Fglasses","SMB on Smart Glasses"," — alternative protocol",[37,825,826,830],{},[812,827,829],{"href":828},"\u002Fnetwork\u002Fwebdav\u002Fglasses","WebDAV on Smart Glasses"," — WebDAV protocol access",[37,832,833,837],{},[812,834,836],{"href":835},"\u002Fnetwork\u002Fsftp","SFTP Protocol"," — secure alternative to FTP",[839,840,841],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}",{"title":63,"searchDepth":134,"depth":134,"links":843},[844,845,850,855,860,861,866,873,878],{"id":12,"depth":134,"text":13},{"id":23,"depth":134,"text":24,"children":846},[847,848,849],{"id":28,"depth":140,"text":29},{"id":51,"depth":140,"text":52},{"id":69,"depth":140,"text":70},{"id":108,"depth":134,"text":109,"children":851},[852,853,854],{"id":112,"depth":140,"text":113},{"id":219,"depth":140,"text":220},{"id":334,"depth":140,"text":335},{"id":353,"depth":134,"text":354,"children":856},[857,858,859],{"id":357,"depth":140,"text":358},{"id":385,"depth":140,"text":386},{"id":406,"depth":140,"text":407},{"id":424,"depth":134,"text":425},{"id":583,"depth":134,"text":584,"children":862},[863,864,865],{"id":587,"depth":140,"text":588},{"id":605,"depth":140,"text":606},{"id":626,"depth":140,"text":627},{"id":650,"depth":134,"text":651,"children":867},[868,869,870,871,872],{"id":654,"depth":140,"text":655},{"id":672,"depth":140,"text":673},{"id":690,"depth":140,"text":691},{"id":708,"depth":140,"text":709},{"id":726,"depth":140,"text":727},{"id":741,"depth":134,"text":742,"children":874},[875,876,877],{"id":745,"depth":140,"text":746},{"id":763,"depth":140,"text":764},{"id":784,"depth":140,"text":785},{"id":805,"depth":134,"text":806},"FTP protocol details for smart glasses. Connect to FTP servers from glasses compute units for media transfer, AR assets, and content management.","md",{"faq":882,"howto":895},[883,886,889,892],{"q":884,"a":885},"How does FTP technically work on glasses hardware?","On standalone Android compute units, FTP uses the device's WiFi to establish standard TCP connections to FTP servers. The protocol operates identically to any Android device — control channel on port 21, passive data connections for transfers.",{"q":887,"a":888},"Should I use FTP or SFTP on glasses?","SFTP for security-sensitive transfers (credentials are encrypted). FTP is fine for home network use with a dedicated limited account. SFTP adds slight overhead but significantly improves security.",{"q":890,"a":891},"What FTP servers work best with glasses?","Any standard FTP server: Synology\u002FQNAP NAS, vsftpd, ProFTPD, FileZilla Server. Configure passive mode and set generous timeouts. Simple folder structures work best given glasses' interface constraints.",{"q":893,"a":894},"Can glasses upload files to FTP servers?","Yes. Compute units can upload files (sensor logs, captured photos, AR data) to FTP servers. Audio-only glasses can't directly upload, but the paired phone can upload content from the phone's storage.",{"name":896,"description":897,"totalTime":898,"steps":899},"How to Configure FTP Protocol on Smart Glasses","Technical setup for FTP connections from smart glasses hardware.","PT2M",[900,903,906],{"name":901,"text":902},"Verify network access","Confirm the glasses compute unit or paired phone has WiFi access to the network hosting your FTP server.",{"name":904,"text":905},"Configure connection","In AnExplorer: Network → FTP → server IP, port 21, passive mode, credentials. Test connection.",{"name":907,"text":908},"Optimize for glasses use","Save bookmark for quick access. Create simple server-side folder structure for efficient navigation on limited glasses interfaces.","\u002Fnetwork\u002Fftp\u002Fglasses",{"title":5,"description":879},"network\u002Fftp\u002Fglasses","FjWGKlEvja5HTYmtPe3FjdpCpcD5R5taGAP_TyXA8A0",1780644351708]