[{"data":1,"prerenderedAt":334},["ShallowReactive",2],{"\u002F":3,"navigation":33,"content-listing":55},{"id":4,"title":5,"alternates":6,"author":6,"body":7,"categories":14,"comments":16,"cover":6,"date":17,"description":18,"draft":16,"extension":19,"hidden":16,"language":6,"layout":20,"links":6,"listed":16,"meta":21,"navigation":22,"nocomments":16,"notoc":16,"pageid":6,"path":23,"readingTime":24,"redirect_to_domain":6,"redirect_to_full_url":6,"robots":6,"schemaOrg":6,"seo":27,"sitemap":28,"stem":29,"table_of_contents":16,"tags":30,"__hash__":32},"page\u002Findex.md","Welcome to KC9ZYZ",null,{"type":8,"value":9,"toc":10},"minimark",[],{"title":11,"searchDepth":12,"depth":12,"links":13},"",2,[],[15],"welcome",false,"2025-02-17","A ham radio and computer blog","md","home",{},true,"\u002F",{"text":25,"minutes":26,"time":26,"words":26},"0 min read",0,{"title":5,"description":18},{"loc":23},"index",[31],"hello","Du6F6XrvG7gkTBqgQ_ozmzCE3dtT9CnkwiezKU7XUJc",[34,38,42,46,47,51],{"title":35,"path":36,"stem":37},"Welcome Back","\u002F2025-02-17-welcome","2025-02-17-Welcome",{"title":39,"path":40,"stem":41},"Microcontroller PCM Audio Player: Introduction","\u002Farduino-pcm-audio-player-introduction","arduino-pcm-audio-player-introduction",{"title":43,"path":44,"stem":45},"Digitizing The Airwaves: Codec2 HTs","\u002Fcodec2-ht","codec2-ht",{"title":5,"path":23,"stem":29},{"title":48,"path":49,"stem":50},"Welcome","\u002Fwelcome-2","welcome-2",{"title":52,"path":53,"stem":54},"X11 Forwarding with RPi, PuTTY, and Android","\u002Fx11-forwarding-with-rpi","x11-forwarding-with-rpi",[56,83,131,260,311],{"id":57,"title":35,"alternates":6,"author":6,"body":58,"categories":71,"comments":16,"cover":6,"date":17,"description":73,"draft":16,"extension":19,"hidden":16,"language":6,"layout":6,"links":6,"listed":16,"meta":74,"navigation":22,"nocomments":16,"notoc":16,"pageid":6,"path":36,"readingTime":75,"redirect_to_domain":6,"redirect_to_full_url":6,"robots":6,"schemaOrg":6,"seo":80,"sitemap":81,"stem":37,"table_of_contents":16,"tags":6,"__hash__":82},"page\u002F2025-02-17-Welcome.md",{"type":8,"value":59,"toc":69},[60,65],[61,62,64],"h1",{"id":63},"welcome-back-to-kc9zyz","Welcome Back to KC9ZYZ",[66,67,68],"p",{},"Welcome back to KC9ZYZ! This is where I'll write about ham radio, computing, AI, and other topics that interest me.",{"title":11,"searchDepth":12,"depth":12,"links":70},[],[72],"blog","Welcome back to the blog",{},{"text":76,"minutes":77,"time":78,"words":79},"1 min read",0.115,6900,23,{"title":35,"description":73},{"loc":36},"8xSiyr_BsjI9Ha99_mNkrixvf6uRlsUoAqo5vp_mKnU",{"id":84,"title":43,"alternates":6,"author":6,"body":85,"categories":6,"comments":16,"cover":6,"date":117,"description":118,"draft":16,"extension":19,"hidden":16,"language":6,"layout":6,"links":6,"listed":16,"meta":119,"navigation":22,"nocomments":16,"notoc":16,"pageid":6,"path":44,"readingTime":120,"redirect_to_domain":6,"redirect_to_full_url":6,"robots":6,"schemaOrg":6,"seo":124,"sitemap":125,"stem":45,"table_of_contents":16,"tags":126,"__hash__":130},"page\u002Fcodec2-ht.md",{"type":8,"value":86,"toc":115},[87,103,112],[66,88,89,96,97,102],{},[90,91,95],"a",{"href":92,"rel":93},"http:\u002F\u002Fwww.rowetel.com\u002Fblog\u002F?page_id=452",[94],"nofollow","Codec2"," is an open source speech codec used by the ham radio mode ",[90,98,101],{"href":99,"rel":100},"https:\u002F\u002Ffreedv.org\u002Ftiki-index.php",[94],"FreeDV",". The main draw to Codec2 is the very low bitrate required to sustain quality speech, which is very useful on HF so that bandwidth can be kept small, and signals can be received with low SNR.",[66,104,105,106,111],{},"I stumbled across a cheap module using the ",[90,107,110],{"href":108,"rel":109},"http:\u002F\u002Fwww.silabs.com\u002Fproducts\u002Fwireless\u002FEZRadioPRO\u002FPages\u002Fsi446x.aspx",[94],"Si4463"," chip, which is able to transmit and receive (G)FSK, 4(G)FSK, and OOK with a wide tuning range in the VHF and UHF bands. I've been looking for a use for these modules for a while, and while doing some research on Codec2, I believe I have found an application. Using a low-cost ARM microcontroller, I plan to implement a data transceiver that is capable of communicating using Codec2, to be used by hams (partially because these modules do not appear to have any sort of FCC certification). In addition to voice, I would also like to send low-rate data across the link as well.",[66,113,114],{},"With my senior design project starting to increase in workload, I won't have much time to devote to this project, but I plan to make slow, steady progress on it when I can.",{"title":11,"searchDepth":12,"depth":12,"links":116},[],"2016-02-03","Codec2 is an open source speech codec used by the ham radio mode FreeDV. The main draw to Codec2 is the very low bitrate required to sustain quality speech.",{},{"text":76,"minutes":121,"time":122,"words":123},0.97,58200,194,{"title":43,"description":118},{"loc":44},[127,128,129],"codec2","electronics","software","5JIC7DSgGe2lsRNApUeQA0Q5-Lt3vceiOARgkN7Z3FA",{"id":132,"title":52,"alternates":6,"author":6,"body":133,"categories":6,"comments":16,"cover":6,"date":246,"description":247,"draft":16,"extension":19,"hidden":16,"language":6,"layout":6,"links":6,"listed":16,"meta":248,"navigation":22,"nocomments":16,"notoc":16,"pageid":6,"path":53,"readingTime":249,"redirect_to_domain":6,"redirect_to_full_url":6,"robots":6,"schemaOrg":6,"seo":254,"sitemap":255,"stem":54,"table_of_contents":16,"tags":256,"__hash__":259},"page\u002Fx11-forwarding-with-rpi.md",{"type":8,"value":134,"toc":244},[135,138,154,157,164,169,175,222,225,236],[66,136,137],{},"I have a particular need to use my Raspberry Pi as a headless system while still getting information from a GUI application. There are plenty of tutorials for using VNC or ssh with X Forwarding to accomplish this, but for my situation I needed:",[139,140,141,145,148,151],"ol",{},[142,143,144],"li",{},"The Raspberry Pi to remain headless (not connected to a display)",[142,146,147],{},"To edit and execute python scripts",[142,149,150],{},"A way to see the GUI generated by those python scripts (hard to do without a display)",[142,152,153],{},"Monitor the image onscreen near the headless unit (very hard to do without a display)",[66,155,156],{},"With these needs in mind, VNC and X11 forwarding to my stationary computer were not going to work. I found a tutorial on X11 forwarding using JuiceSSH and an X11 server app on my Android phone, but the port forwarding setup never seemed to direct it back to the device properly, and I would have had to rely on using the soft keyboard to start the python script each time anyway.",[66,158,159,160,163],{},"While going back through the motions of setting up X11 forwarding in PuTTY, I thought about what would happen if I forwarded to someplace other than my desktop.",[161,162],"br",{},"\nAs it turns out, that gave me exactly what I needed to work in my situation.",[165,166,168],"h4",{"id":167},"ill-walk-you-through-how-i-did-that","I'll walk you through how I did that:",[66,170,171],{},[172,173,174],"em",{},"Disclaimer, this is geared towards Windows users with Android phones. As in it won't work for anybody with any other combination of devices.",[139,176,177],{},[142,178,179,180,185,186],{},"Download the X server application from ",[90,181,184],{"href":182,"rel":183},"https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=x.org.server",[94],"Google Play",".",[187,188,189,192,195,198,201,204,212,215],"ul",{},[142,190,191],{},"Once installed, open the application and wait for the blue screen to show up with your device's info.",[142,193,194],{},"Open up PuTTY on your Windows machine.",[142,196,197],{},"Fill in the Host Name field with your Pi's IP address.",[142,199,200],{},"Configure PuTTY to forward all X11 traffic to your Android phone by entering the IP address shown after the DISPLAY= on your phone (include the display number after the colon).",[142,202,203],{},"Open the connection (or click back to the Session screen to save it as a preset) and log in to your Pi.",[142,205,206,207,211],{},"Type ",[208,209,210],"code",{},"startlxde &"," in the command line and wait for all of the warning messages to flood through and the Raspberry Pi's desktop to appear on your phone. In case you are wondering if\u002Fwhy the ampersand is important: this instructs the system to execute the command in the background. This allows you to continue typing commands even if the last one is still running.",[142,213,214],{},"Run any command you want, and have the GUI appear on your phone. If the command you run has no GUI element to it, it will not show up on the screen. If the command you run has a GPU-dependent GUI, it probably won't work. Here is an example of a pygame application started over SSH.",[142,216,217,218,221],{},"Check out the configuration options of the X server on the ",[90,219,184],{"href":182,"rel":220},[94]," page. There are steps to turn off the annoying mouse gyroscope control there. To change the screen resolution\u002Ftext size, restart the app and tap on the black loading screen when prompted.",[66,223,224],{},"That should get you started in viewing your Raspberry Pi X session on an Android phone. The benefits of this procedure are:",[187,226,227,230,233],{},[142,228,229],{},"Versatility of a physical keyboard",[142,231,232],{},"Access to Windows at your desk\u002Fcouch\u002Fwherever",[142,234,235],{},"Mobility of the display",[66,237,238,239,185],{},"A great guide on using PuTTY to forward X11, which this was based off of, can be found ",[90,240,243],{"href":241,"rel":242},"https:\u002F\u002Fwiki.utdallas.edu\u002Fwiki\u002Fdisplay\u002FFAQ\u002FX11+Forwarding+using+Xming+and+PuTTY",[94],"on the UT Dallas wiki",{"title":11,"searchDepth":12,"depth":12,"links":245},[],"2015-09-16","I have a particular need to use my Raspberry Pi as a headless system while still getting information from a GUI application.",{},{"text":250,"minutes":251,"time":252,"words":253},"3 min read",2.67,160200,534,{"title":52,"description":247},{"loc":53},[129,257,258],"raspberry-pi","x11","lM7jws5QT2qWCVlsDfKIdW0JtJ6DSiplwvp1d7roxn0",{"id":261,"title":39,"alternates":6,"author":6,"body":262,"categories":6,"comments":16,"cover":6,"date":301,"description":266,"draft":16,"extension":19,"hidden":16,"language":6,"layout":6,"links":6,"listed":16,"meta":302,"navigation":22,"nocomments":16,"notoc":16,"pageid":6,"path":40,"readingTime":303,"redirect_to_domain":6,"redirect_to_full_url":6,"robots":6,"schemaOrg":6,"seo":307,"sitemap":308,"stem":41,"table_of_contents":16,"tags":309,"__hash__":310},"page\u002Farduino-pcm-audio-player-introduction.md",{"type":8,"value":263,"toc":299},[264,267,270,281,284,287,290],[66,265,266],{},"Now that I am four weeks into the semester, I have finally settled into working full time again. With this comes some drive to get around to a side project.",[66,268,269],{},"For my first project of the year, I am interested in creating a small device based off an ATmega328p that plays wav files off of a MicroSD card. The files will need to be encoded in the following format:",[139,271,272,275,278],{},[142,273,274],{},"31.25 kHz sample rate",[142,276,277],{},"8-bit unsigned PCM",[142,279,280],{},"Mono",[66,282,283],{},"The device will be able to handle 16-bit and\u002For stereo files, but the audio output is going to be 8-bit and mono, so that's just extra file size for no gain. I'll be creating a software tool to convert from any supported format using ffmpeg.",[66,285,286],{},"I'll be breadboarding a prototype, and then sending for PCBs from a cheap board house and getting all the components to make the final device.",[288,289],"hr",{},[66,291,292,296,298],{},[293,294,295],"strong",{},"Update 1:",[161,297],{},"\nThe prototype worked pretty well, with surprisingly clean audio without any filtering. I decided to abandon this project in favor of schoolwork.",{"title":11,"searchDepth":12,"depth":12,"links":300},[],"2015-02-05",{},{"text":76,"minutes":304,"time":305,"words":306},0.815,48900,163,{"title":39,"description":266},{"loc":40},[128],"5ZDm0acDbD74W4Yd6cN28T_ZvUIm7LzIN276GF9NXRI",{"id":312,"title":48,"alternates":6,"author":6,"body":313,"categories":6,"comments":16,"cover":6,"date":323,"description":324,"draft":16,"extension":19,"hidden":16,"language":6,"layout":6,"links":6,"listed":16,"meta":325,"navigation":22,"nocomments":16,"notoc":16,"pageid":6,"path":49,"readingTime":326,"redirect_to_domain":6,"redirect_to_full_url":6,"robots":6,"schemaOrg":6,"seo":330,"sitemap":331,"stem":50,"table_of_contents":16,"tags":332,"__hash__":333},"page\u002Fwelcome-2.md",{"type":8,"value":314,"toc":321},[315],[66,316,317,318,320],{},"Welcome! This is the home of Billy KC9ZYZ's blog about ham radio, electronics, and software.",[161,319],{},"\nMaybe I'll be up to something interesting.",{"title":11,"searchDepth":12,"depth":12,"links":322},[],"2014-12-19","Welcome! This is the home of Billy KC9ZYZ's blog about ham radio, electronics, and software. Maybe I'll be up to something interesting.",{},{"text":76,"minutes":327,"time":328,"words":329},0.105,6300,21,{"title":48,"description":324},{"loc":49},[15],"qa4GFKShyiW7R8YmA_kW50OcNBjO6OMZ9UozDGFYyoo",1788095553303]