= Browser Based Setup = Page to document the design and implementation of Browser Based Setup == Requirements == * Replace Existing mythtv-setup * All backend setup to be done via a web browser connection to the backend. * Enumerate and autodetect tuners/available inputs to the best of our ability. * Enumerate and present only existing network interfaces. * Simplify setup of slave backends with sanity checking of IP address setup * Do not permit a misconfigured backend. Add enough sanity checking that the resulting product is functional, even if not perfectly configured. * Present only relevant options/modulations/frequency tables to the hardware and locale in the scanner * Validate all input, require that each step is successfully completed/configured before moving on to the next. * If advanced options are to be presented at all, they should be kept in an advanced pane-- dev nodes, etc. should be invisible to the average user since they are unnecessary to anyone not overriding the information * Track reassignment of dev nodes on system restart if possible-- store a "fingerprint" of tuner information to track changes (serial number when available, PCI ID when not, vendor/name/etc. when all else fails) * == Design == === General === * IP Addresses to be selected from a simple dropdown. If address is non-loopback, add a "Make this backend the master" button/checkbox. * Simplify slave backend setup with a simple checkbox or by detecting existing backends and offering a simple option to add this backend to the existing setup. === Scanning Profiles (stuarta) === The intention of this is to make setup easier by allowing the user to describe their setup to MythTV in a less technical way. For example, they have a dvb-s card which is pointing to the FreeSat satellite group. * Simplify scanner setup by providing scanning profiles. Using our example above, the user adds a dvb-s card, and tells us it's pointing to FreeSat. From this the scanner then has all the information it needs to go and find the channels. === Capture Card Setup === * Autodetect all attached cards. * Allow for dynamic adding and removal of capture cards with a running backend. * Hide DiSEqC options for incapable devices. === Video Sources === * Support the XMLTV configuration API. The API allows this config to be done in the browser (or other UI). This is preferable to redirecting the user to a shell for interactive configuration of xmltv e.g. channel selection. * Allow users to select a subset of channels from a larger set. For example, in the United States, CATV companies have created three tiers of service. "Analog", where the channels go from 1 to 25 or so. Can be tuned using a standard NTSC analog tuner. "DTA" - Digital Terminal Adapter. Analog (typically baseband) output, can tune channels 1 through 125. "Digital", a full set-top-box, which can tune channels 1 to 9999. Typically has high-def outputs. "DTA" is a subset of "Digital", but there is no easy way for the user to remove channels above 125 and apply the resulting lineup only to encoder cards which are connected to a DTA. === Channel Scanner/Input Connections === * If we have only one video source, we don't need to even ask the user to manually map the card to source. This step can be skipped. * Display names can be arrived at automatically by taking the video source name and appending an incremented number, e.g. Freeview 1, Freeview 2. === Channel Editor/Icon Download === * Do not allow frequencies/mplexid/etc. to be edited outside of the functional range of the device. * Allow filtering by a range of criteria including service providers (DVB). This would take some of the pain out of hiding the unwanted channels (shopping/adult channels) from satellite lineups with hundreds of channels. See Kaffeine for an example. * Integrate with SD website to auto-setup new accounts? === Storage Group Setup === * Do not permit assignment of directories to a storage group if the backend user does not have permissions to read and write to them. * Do not permit assignment of directories that currently exist as the root of a mount.