TinyVNC 3DS: Difference between revisions

From GameBrew
(Created page with "{{Infobox 3DS homebrew | title = TinyVNC | image = https://dlhb.gamebrew.org/3dshomebrew/TinyVNC.jpg|250px | type = Other Apps | version = v1.0 | licence = Mixed | author = Ba...")
 
 
(17 intermediate revisions by the same user not shown)
Line 1: Line 1:
{{Infobox 3DS homebrew
{{Infobox 3DS Homebrews
| title = TinyVNC
|title=TinyVNC
| image = https://dlhb.gamebrew.org/3dshomebrew/TinyVNC.jpg|250px
|image=Tinyvnc2.png
| type = Other Apps
|description=VNC viewer for Nintendo 3DS.
| version = v1.0
|author=Badda
| licence = Mixed
|lastupdated=2022/06/07
| author = Badda
|type=Utilities
| website = https://gbatemp.net/threads/release-tinyvnc-vnc-viewer-for-nintendo-3ds.574242/
|version=2.0
| download = https://dlhb.gamebrew.org/3dshomebrew/TinyVNC.rar
|license=Mixed
| source = https://dlhb.gamebrew.org/3dshomebrew/TinyVNC.rar
|download=https://dlhb.gamebrew.org/3dshomebrews/tinyvnc.7z
|website=https://github.com/badda71/TinyVNC
|source=https://github.com/badda71/TinyVNC
}}
}}
<youtube>x9xTyh63Tos</youtube>
TinyVNC is a VNC viewer for Nintendo 3DS. With this homebrew software, you can connect to any computer running a VNC server, see the screen contents and control it with your 3DS.
 
From [https://en.wikipedia.org/wiki/Virtual_Network_Computing Wikipedia], "VNC (Virtual Network Computing) is a graphical desktop-sharing system [...] to remotely control another computer. It transmits the keyboard and mouse events from one computer to another, relaying the graphical-screen updates back in the other direction, over a network". Contrary to RDP (which is Microsoft only), it is platform-independent and thus works with Windows, Linux, MacOS, Android and many more.
 
==Features==
* Two independent and fast VNC-viewers for 3DS top and bottom screen.
* Streaming audio client (mp3 over HTTP).
* Cemuhook server for serving 3DS controler and motion data to clients (e.g. Cemu).
* UDP-Feeder client to serve 3DS controler and motion data to remote vJoy via [https://github.com/klach/vjoy-udp-feeder vJoy-udp-feeder].
* supports server or client side scaling if VNC screen size is too big.
 
==Installation==
Available in 3DSX, CIA adn 3DS formats.
* CIA - Install .cia with [[FBI 3DS]].
* 3DSX -  Run .3dsx from Homebrew Launcher (put 3dsx file in /3ds/TinyVNC dir).
* 3DS - Run .3ds from flash card.
 
Apart from this, a [[DSP1_3DS|DSP-dump]] is required for sound to work correctly in the CIA version.


[[File:https://gbatemp.net/attachments/upload_2020-10-12_16-42-18-png.228808/|class=bbCodeImage LbImage|upload_2020-10-12_16-42-18.png]]
==User guide==
===VNC server and resolution===
TinyVNC has been tested with Windows and with multiple VNC servers.
* [https://www.tightvnc.com TightVNC] server seems to work best. Even streaming videos or games works well (see [https://www.gamebrew.org/wiki/TinyVNC_3DS#Media video below]).
* The recommendation is having the VNC server runs in a virtual machine because there, you can freely define the server display resolution.  
* Maximum supported server resolution is 1024x1024px - anything larger cannot fit into a 3DS texture buffer and thus cannot be rendered to the 3DS screen.  


This ist the first (hopefully) stable release of TinyVNC, a VNC viewer for Nintendo 3DS. With this homebrew software, you can connect to any computer running a VNC server, see the screen contents and control it with your 3DS.
As a rule of thumb - The larger the server display resolution, the worse the performance.  
From [https://en.wikipedia.org/wiki/Virtual_Network_Computing Wikipedia]: &quot;VNC (Virtual Network Computing) is a graphical desktop-sharing system [...] to remotely control another computer. It transmits the keyboard and mouse events from one computer to another, relaying the graphical-screen updates back in the other direction, over a network&quot;. Contrary to RDP (which is Microsoft only), it is platform-independent and thus works with Windows, Linux, MacOS, Android and many more ...!
* This is because the server display is transferred to the 3DS in full and TinyVNC scales the image to fit the 400x240px 3DS screen.
* AFAIK, the only server supporting server side scaling is UltraVNC which does not perform well with TinyVNC, so that feature is not included.
* In general, a server resolution of 800x480 is great for web browsing etc.
* However for video or game streaming, the server should have a display resolution of 400x240px or even less.


I tested TinyVNC with Windows and with multiple VNC servers. TightVNC (https://www.tightvnc.com/) server seems to work best. Even streaming videos or games works well (as can be seen in my [https://gbatemp.net/threads/cemu3ds-wii-u-emulator-for-nintendo-3ds.571961/ controversial] [https://www.youtube.com/watch?v=SecQlLbLbig video playing &quot;Breath of the Wild&quot; on my 3DS]).
Audio streaming is supported (mp3 over HTTP) but requires an additional server software running on the VNC server machine. This can be easily setup using [https://www.videolan.org/vlc VLC media player]. Below is a short tutorial how to do that.


My recommendation is, to have the VNC server running in a virtual machine because there, you can freely define the server display resolution. Maximum supported server resolution is 1024x1024px - anything larger cannot fit into a 3DS texture buffer and thus cannot be rendered to the 3DS screen. As a rule of thumb: the larger the server display resolution, the worse the performance. This is because the server display is transferred to the 3DS in full and TinyVNC scales the image to fit the 400x240px 3DS screen. AFAIK, the only server supporting server side scaling is UltraVNC which does not perform well with TinyVNC, so I did not include that feature.
===Audio server setup with VLC on Win10===
'''I. Set up an audio device that captures all your system sounds'''
* Go to Start Menu and search for Control Panel, open it.
* Go to Hardware and Sound > Manage audio devices and choose tab Recording.
* Right-click in the list of recording devices and check Show disabled devices.
* Check if you have a Stereo Mix device.
** If yes, right-click the device and click Enable. This recording device will now record all your sounds that your system plays and provide it to whatever program is interested.
** If you don't have a Stereo Mix device, you can install something similar using [https://vb-audio.com/Cable VB-Cable]. After installing this software, you need to choose the playback device CABLE Input as your default.


From my experience, a server resolution of 800x480 is great for web browsing etc, but for video- or game streaming, the server should have a display resolution of 400x240px or even less.
'''II. Set up VLC to provide your system sounds in a stream'''
Audio streaming is supported (mp3 over HTTP) but requires an additional server software running on the VNC server machine. This can be easily setup using VLC media player (https://www.videolan.org/vlc/). Below is a short tutorial how to do that.
* Start VLC and choose Media > Stream.
* Choose Tab Capture Device:
** Set Capture Mode to DirectShow.
** Set Video Device Name to None.
** Set Audio Device Name to the audio capture device from Section I. Then click on button Stream.
* In the Source-Screen, click Next.
* In Destination Setup, select HTTP as New Destination and click Add.
** In the next screen, port 8080 and path "/" are normally fine.
** This is what you need to specify in TinyVNC settings as well.
** Now click Next.
* In Transcoding Options, check Activate Transcoding.
** Choose Profile Audio - MP3.
** Click on the little wrench to the right of the dropdown box.
* In Tab Encapsulation, choose MP3.  
* In Tab Audio Codec, choose Codec MP3 and a desired bitrate.
** 96 should be ok, choose 64 or lower if you have isses with the bandwidth.  
** Click on Save > Next > Stream.


Now VLC will stream all audio coming from the above audio capture device (which is ideally set up to capture all your system sounds) via HTTP-server on port 8080, path "/" as MP3 to clients who are interested in hearing. You can test this by directing your browser to http://<servername>:8080/, where <servername> should be the IP address of the computer you're running VLC on.


<div class="ToggleTriggerAnchor bbCodeSpoilerContainer">
Last but not least, you need to configure the port and path (8080 and "/" if you followed the instructions above) in TinyVNC server settings. You're now done and should hear your systems audio when conneting to the VNC server.


<span>Spoiler: <span class="SpoilerTitle">Audio server setup with VLC on Win10</span></span>
'''Note:''' During first start, TinyVNC will write its config files to the SD card. You can customize the file /3ds/TinyVNC/keymap to customize button mappings.
<div class="SpoilerTarget bbCodeSpoilerText">


'''I. Set up an audio device that captures all your system sounds'''
==Controls==
'''Default mappings:'''


# Go to Start Menu and search for &quot;Control Panel&quot;, open the Control Panel
A - a-key
# Go to menu &quot;Hardware and Sound&quot; -&gt; &quot;Manage audio devices&quot; and choose tab &quot;Recording&quot;
# Right-click in the list of recording devices and check &quot;Show disabled devices&quot;
# Check if you have a &quot;Stereo Mix&quot; device. If yes, right-click the device and click on &quot;Enable&quot;. This recording device will now record all your sounds that your system plays and provide it to whatever program is interested.
# If you don't have a &quot;Stereo Mix&quot; device, you can install something similar using VB-Cable https://vb-audio.com/Cable/. After installing this software, you need to choose the playback device &quot;CABLE Input&quot; as your default.


'''II. Set up VLC to provide your system sounds in a stream'''
B - b-key


# Start VLC and choose &quot;Media&quot;-&gt;&quot;Stream&quot;
X - x-key
# Choose Tab &quot;Capture Device&quot;, set &quot;Capture Mode&quot; to &quot;DirectShow&quot;, set &quot;Video Device Name&quot; to &quot;None&quot; and set &quot;Audio Device Name&quot; to the audio capture device from Section I. Click on button &quot;Stream&quot;


# In the &quot;Source&quot;-Screen, click Next
Y - y-key
# In &quot;Destination Setup&quot;, select &quot;HTTP&quot; as New Destination and click &quot;Add&quot;. In the next screen, port 8080 and path &quot;/&quot; are normally fine - this is what you need to specify in TinyVNC settings as well. Now click &quot;Next&quot;
# In &quot;Transcoding Options&quot;, check &quot;Activate Transcoding&quot;, choose Profile &quot;Audio - MP3&quot; and click on the little wrench to the right of the dropdown box
# In Tab &quot;Encapsulation&quot;, choose &quot;MP3&quot;. In Tab&quot;Audio Codec&quot;, choose Codec &quot;MP3&quot; and a desired bitrate (96 should be ok, choose 64 or lower if you have isses with the bandwidth). Click on &quot;Save&quot;, then &quot;Next&quot;, then &quot;Stream&quot;
# Now VLC will stream all audio coming from the above audio capture device (which is ideally set up to capture all your system sounds) via HTTP-server on port 8080, path &quot;/&quot; as MP3 to clients who are interested in hearing. You can test this by directing your browser to http://&lt;servername&gt;:8080/, where &lt;servername&gt; should be the IP address of the computer you're running VLC on.


Last but not least, you need to configure the port and path (8080 and &quot;/&quot; if you followed the instructions above) in TinyVNC server settings.
L - Right mouse button
Voil�, you're done and should hear your systems audio when conneting to the VNC server [[File:styles/default/xenforo/clear.png|class=mceSmilieSprite mceSmilie55|:D]]


</div>
R - w-keys


</div>
ZL/ZR  - 1, 2-keys


<span style="font-size: 18px">'''Download here: https://github.com/badda71/TinyVNC/releases'''</span>
C-Pad  - Cursor up, down, left, right


'''Installation:'''
D-Pad - t, g, f, h-keys
Install CIA with [https://github.com/Steveice10/FBI/releases FBI], run 3dsx from homebrew launcher (put 3dsx file in /3ds/vice3DS-C64 dir) or run 3ds from flash card.
Apart from this, a DSP-dump is required for sound to work correctly in the CIA version.
https://gbatemp.net/threads/dsp1-a-new-dsp-dumper-cia-for-better-stability.469461/


'''Usage:'''
C-Stick - i, k, j, l-keys
During first start, TinyVNC will write its config files to the SD card. You can customize the file /3ds/TinyVNC/keymap to customize button mappings. Preconfigured button mappings are:


Select - Shift key (for alternate button funtions)


* A: a-key
Start - Quick function menu
* B: b-key
* X: x-key
* Y: y-key
* L, R: q, w-keys
* ZL, ZR: 1, 2-keys
* C-Pad: Cursor up, down, left, right
* D-Pad: t, g, f, h-keys
* C-Stick: i, k, j, l-keys
* SELECT: Escape-key
* START: Disconnect


The touch screen acts as a touchpad for mouse control (tap-to-click, double-tap-to-double-click, tap-and-drag)
'''Combination keys:'''


Current version is '''1.0'''
Shift+A - A-key


Shift+B - B-key


<div class="ToggleTriggerAnchor bbCodeSpoilerContainer">
Shift+X - X-key


<span>Spoiler: <span class="SpoilerTitle">Release Notes</span></span>
Shift+Y - Y-key
<div class="SpoilerTarget bbCodeSpoilerText">


v1.0
Shift+L/R - Q, W-keys


* CIA/3DS version
Shift+ZL/ZR - 3, 4-keys
* added streaming audio support (mp3 via HTTP)
* added on-screen keyboard
* configurable scaling (on/off)
* key value to toggle bottom backlight (8)


v0.9
Shift+C-Pad - Cursor up, down, left, right


* Initial version
Shift+D-Pad - T, G, F, H-keys


Shift+C-Stick - I, K, J, L-keys


</div>
Shift+Start - Disconnect


</div>
The touch screen acts as a touchpad for mouse control (tap-to-click, double-tap-to-double-click, tap-and-drag).
'''ToDos:'''


==Screenshots==
https://dlhb.gamebrew.org/3dshomebrews/tinyvnc3.png
https://dlhb.gamebrew.org/3dshomebrews/tinyvnc4.png


* UI to customize button mappings
==Media==
* Configurable soft buttons on bottom screen
'''Playing "Breath of the Wild" on my Nintendo 3DS''' ([https://www.youtube.com/watch?v=SecQlLbLbig Badda]) <br>
<youtube>SecQlLbLbig</youtube>


* Add support for 3DS Gyroscope / Accelerometer / 3D-slider (this is really difficult because no VNC server supports valuator inputs ...)
'''How to use TightVNC''' ([https://www.youtube.com/watch?v=x9xTyh63Tos ITJon]) <br>
<youtube>x9xTyh63Tos</youtube>


If anybody wants to help with these ToDos, you are welcome to help me with a pull request on github [[File:styles/default/xenforo/clear.png|class=mceSmilieSprite mceSmilie55|:D]]
==Changelog==
Any bugs can be reported here or on https://github.com/badda71/TinyVNC/issues
'''v2.0'''
* Support of 2nd VNC connection on bottom screen.
* Added vJoy-UDP-feeder clients: one for buttons and joysticks, another for motion controls.
* Added Cemuhook server: sends motion controls, buttons and joysticks to clients (Cemu, Yuzu etc).
* Added server (if supported) or client side scaling. Now, screens >1024px size are scaled automatically.
* TinyVNC can be run without VNC-connection (e.g. only cemuhook server or only mp3 stream client).
* Added quick command menu to control connection settings.
* Added "shift"-key to enable button combinations.
* Lots of minor optimizations and bugfixes.


Have fun!
'''v1.0'''
* CIA/3DS version.
* Added streaming audio support (mp3 via HTTP).
* Added on-screen keyboard.
* Configurable scaling (on/off).
* Key value to toggle bottom backlight (8).


<div class="messageTextEndMarker">
'''v0.9'''
* Initial version.


==External links==
* GitHub - https://github.com/badda71/TinyVNC
* GBAtemp - https://txwl-img.net/threads/release-tinyvnc-vnc-viewer-for-nintendo-3ds.574242
* GBAtemp - https://gbatemp.net/threads/cemu3ds-wii-u-emulator-for-nintendo-3ds.571961


</div>
[[Category:3DS homebrew applications]]
[[Category:Homebrew utility applications on 3DS]]

Latest revision as of 03:20, 8 June 2022

TinyVNC
Tinyvnc2.png
General
AuthorBadda
TypeUtilities
Version2.0
LicenseMixed
Last Updated2022/06/07
Links
Download
Website
Source

TinyVNC is a VNC viewer for Nintendo 3DS. With this homebrew software, you can connect to any computer running a VNC server, see the screen contents and control it with your 3DS.

From Wikipedia, "VNC (Virtual Network Computing) is a graphical desktop-sharing system [...] to remotely control another computer. It transmits the keyboard and mouse events from one computer to another, relaying the graphical-screen updates back in the other direction, over a network". Contrary to RDP (which is Microsoft only), it is platform-independent and thus works with Windows, Linux, MacOS, Android and many more.

Features

  • Two independent and fast VNC-viewers for 3DS top and bottom screen.
  • Streaming audio client (mp3 over HTTP).
  • Cemuhook server for serving 3DS controler and motion data to clients (e.g. Cemu).
  • UDP-Feeder client to serve 3DS controler and motion data to remote vJoy via vJoy-udp-feeder.
  • supports server or client side scaling if VNC screen size is too big.

Installation

Available in 3DSX, CIA adn 3DS formats.

  • CIA - Install .cia with FBI 3DS.
  • 3DSX - Run .3dsx from Homebrew Launcher (put 3dsx file in /3ds/TinyVNC dir).
  • 3DS - Run .3ds from flash card.

Apart from this, a DSP-dump is required for sound to work correctly in the CIA version.

User guide

VNC server and resolution

TinyVNC has been tested with Windows and with multiple VNC servers.

  • TightVNC server seems to work best. Even streaming videos or games works well (see video below).
  • The recommendation is having the VNC server runs in a virtual machine because there, you can freely define the server display resolution.
  • Maximum supported server resolution is 1024x1024px - anything larger cannot fit into a 3DS texture buffer and thus cannot be rendered to the 3DS screen.

As a rule of thumb - The larger the server display resolution, the worse the performance.

  • This is because the server display is transferred to the 3DS in full and TinyVNC scales the image to fit the 400x240px 3DS screen.
  • AFAIK, the only server supporting server side scaling is UltraVNC which does not perform well with TinyVNC, so that feature is not included.
  • In general, a server resolution of 800x480 is great for web browsing etc.
  • However for video or game streaming, the server should have a display resolution of 400x240px or even less.

Audio streaming is supported (mp3 over HTTP) but requires an additional server software running on the VNC server machine. This can be easily setup using VLC media player. Below is a short tutorial how to do that.

Audio server setup with VLC on Win10

I. Set up an audio device that captures all your system sounds

  • Go to Start Menu and search for Control Panel, open it.
  • Go to Hardware and Sound > Manage audio devices and choose tab Recording.
  • Right-click in the list of recording devices and check Show disabled devices.
  • Check if you have a Stereo Mix device.
    • If yes, right-click the device and click Enable. This recording device will now record all your sounds that your system plays and provide it to whatever program is interested.
    • If you don't have a Stereo Mix device, you can install something similar using VB-Cable. After installing this software, you need to choose the playback device CABLE Input as your default.

II. Set up VLC to provide your system sounds in a stream

  • Start VLC and choose Media > Stream.
  • Choose Tab Capture Device:
    • Set Capture Mode to DirectShow.
    • Set Video Device Name to None.
    • Set Audio Device Name to the audio capture device from Section I. Then click on button Stream.
  • In the Source-Screen, click Next.
  • In Destination Setup, select HTTP as New Destination and click Add.
    • In the next screen, port 8080 and path "/" are normally fine.
    • This is what you need to specify in TinyVNC settings as well.
    • Now click Next.
  • In Transcoding Options, check Activate Transcoding.
    • Choose Profile Audio - MP3.
    • Click on the little wrench to the right of the dropdown box.
  • In Tab Encapsulation, choose MP3.
  • In Tab Audio Codec, choose Codec MP3 and a desired bitrate.
    • 96 should be ok, choose 64 or lower if you have isses with the bandwidth.
    • Click on Save > Next > Stream.

Now VLC will stream all audio coming from the above audio capture device (which is ideally set up to capture all your system sounds) via HTTP-server on port 8080, path "/" as MP3 to clients who are interested in hearing. You can test this by directing your browser to http://<servername>:8080/, where <servername> should be the IP address of the computer you're running VLC on.

Last but not least, you need to configure the port and path (8080 and "/" if you followed the instructions above) in TinyVNC server settings. You're now done and should hear your systems audio when conneting to the VNC server.

Note: During first start, TinyVNC will write its config files to the SD card. You can customize the file /3ds/TinyVNC/keymap to customize button mappings.

Controls

Default mappings:

A - a-key

B - b-key

X - x-key

Y - y-key

L - Right mouse button

R - w-keys

ZL/ZR - 1, 2-keys

C-Pad - Cursor up, down, left, right

D-Pad - t, g, f, h-keys

C-Stick - i, k, j, l-keys

Select - Shift key (for alternate button funtions)

Start - Quick function menu

Combination keys:

Shift+A - A-key

Shift+B - B-key

Shift+X - X-key

Shift+Y - Y-key

Shift+L/R - Q, W-keys

Shift+ZL/ZR - 3, 4-keys

Shift+C-Pad - Cursor up, down, left, right

Shift+D-Pad - T, G, F, H-keys

Shift+C-Stick - I, K, J, L-keys

Shift+Start - Disconnect

The touch screen acts as a touchpad for mouse control (tap-to-click, double-tap-to-double-click, tap-and-drag).

Screenshots

tinyvnc3.pngtinyvnc4.png

Media

Playing "Breath of the Wild" on my Nintendo 3DS (Badda)

How to use TightVNC (ITJon)

Changelog

v2.0

  • Support of 2nd VNC connection on bottom screen.
  • Added vJoy-UDP-feeder clients: one for buttons and joysticks, another for motion controls.
  • Added Cemuhook server: sends motion controls, buttons and joysticks to clients (Cemu, Yuzu etc).
  • Added server (if supported) or client side scaling. Now, screens >1024px size are scaled automatically.
  • TinyVNC can be run without VNC-connection (e.g. only cemuhook server or only mp3 stream client).
  • Added quick command menu to control connection settings.
  • Added "shift"-key to enable button combinations.
  • Lots of minor optimizations and bugfixes.

v1.0

  • CIA/3DS version.
  • Added streaming audio support (mp3 via HTTP).
  • Added on-screen keyboard.
  • Configurable scaling (on/off).
  • Key value to toggle bottom backlight (8).

v0.9

  • Initial version.

External links

Advertising: