xref: /haiku/3rdparty/mmu_man/scripts/HardwareChecker.sh (revision c302a243e15e640fae0f689e32cdf0c18749afee)
19829800dSFrançois Revol#!/bin/sh
29829800dSFrançois Revol#	HardwareChecker.sh for Haiku
39829800dSFrançois Revol#
4*8e8f7748SFrançois Revol#	Copyright 2011-2014, François Revol <revol@free.fr>.
59829800dSFrançois Revol#
69829800dSFrançois Revol#	Distributed under the MIT License
79829800dSFrançois Revol#
89829800dSFrançois Revol#	Created: 2011-10-25
99829800dSFrançois Revol#
109829800dSFrançois Revol
119829800dSFrançois Revol
12a02541b9SFrançois Revolnetcat=nc
136db5b8c6SFrançois Revolreport_site=fake.haikuware.com
149829800dSFrançois Revolreport_cgi=http://haikuware.com/hwreport.php
15894526b5SFrançois Revolpackages="dmidecode netcat"
169829800dSFrançois Revol
1793b9886aSFrançois Revoldo_notify ()
1893b9886aSFrançois Revol{
1993b9886aSFrançois Revol	p="$1"
2093b9886aSFrançois Revol	m="$2"
2193b9886aSFrançois Revol	shift
2293b9886aSFrançois Revol	shift
2393b9886aSFrançois Revol	notify --type progress \
2493b9886aSFrançois Revol		--messageID hwck_$$ \
2593b9886aSFrançois Revol		--icon /system/apps/Devices \
26*8e8f7748SFrançois Revol		--group HardwareChecker \
2793b9886aSFrançois Revol		--title "progress:" --progress "$p" "$m" "$@"
2893b9886aSFrançois Revol
2993b9886aSFrançois Revol
3093b9886aSFrançois Revol}
3193b9886aSFrançois Revol
32*8e8f7748SFrançois Revoltry_install_packages ()
33*8e8f7748SFrançois Revol{
34*8e8f7748SFrançois Revol	which pkgman >/dev/null 2>&1 || return
35*8e8f7748SFrançois Revol
36*8e8f7748SFrançois Revol	for p in $packages; do
37*8e8f7748SFrançois Revol		pkgman install "$p" || alert "Unable to install package '$p'" "Ok"
38*8e8f7748SFrançois Revol	done
39*8e8f7748SFrançois Revol}
40*8e8f7748SFrançois Revol
419829800dSFrançois Revolstart_fake_httpd ()
429829800dSFrançois Revol{
439829800dSFrançois Revol	report_port=8989
449829800dSFrançois Revol	report_file="$(finddir B_DESKTOP_DIRECTORY)/hwchecker_report_$$.txt"
4519618f8bSFrançois Revol	report_ack="<html><head></head><body><h1>Done! You can close this window now.</h1></body></html>"
469829800dSFrançois Revol	report_cgi=http://127.0.0.1:$report_port/hwreport
479829800dSFrançois Revol	(
48*8e8f7748SFrançois Revol		# force a previous instance to close
496c278c3bSFrançois Revol		$netcat 127.0.0.1 8989 < /dev/null > /dev/null
509829800dSFrançois Revol		echo "listening on port $report_port"
519829800dSFrançois Revol		#
529829800dSFrançois Revol		(echo -e "HTTP/1.1 100 Continue\r\n\r\n"; echo -e "HTTP/1.1 200 OK\r\nDate: $(date)\r\nContent-Type: text/html\r\nContent-Length: ${#report_ack}\r\n\r\n$report_ack") | $netcat -q 1 -l -p $report_port > "$report_file"
539829800dSFrançois Revol
546c278c3bSFrançois Revol		# make sure we have something
556c278c3bSFrançois Revol		if [ -s "$report_file" ]; then
569829800dSFrançois Revol			open "$report_file"
579829800dSFrançois Revol			sleep 1
589829800dSFrançois Revol			alert "A file named $(basename $report_file) has been created on your desktop. You can copy this file to an external drive to submit it with another operating system." "Ok"
596c278c3bSFrançois Revol		else
606c278c3bSFrançois Revol			rm "$report_file"
616c278c3bSFrançois Revol		fi
629829800dSFrançois Revol	) &
639829800dSFrançois Revol}
649829800dSFrançois Revol
659829800dSFrançois Revoldetect_network ()
669829800dSFrançois Revol{
679829800dSFrançois Revol	ping -c 1 "$report_site"
689829800dSFrançois Revol	if [ "$?" -gt 0 ]; then
699829800dSFrançois Revol		alert --stop "Cannot contact the hardware report site ($report_site).
709829800dSFrançois RevolYou can continue anyway and generate a local file to submit later on, or try to configure networking." "Cancel" "Configure Network" "Continue"
719829800dSFrançois Revol		case "$?" in
729829800dSFrançois Revol		0)
739829800dSFrançois Revol			exit 0
749829800dSFrançois Revol			;;
759829800dSFrançois Revol		1)
769829800dSFrançois Revol			/system/preferences/Network
779829800dSFrançois Revol			detect_network
789829800dSFrançois Revol			;;
799829800dSFrançois Revol		2)
809829800dSFrançois Revol			start_fake_httpd
819829800dSFrançois Revol			;;
829829800dSFrançois Revol		*)
839829800dSFrançois Revol			exit 1
849829800dSFrançois Revol			;;
859829800dSFrançois Revol		esac
869829800dSFrançois Revol	fi
879829800dSFrançois Revol}
889829800dSFrançois Revol
899829800dSFrançois Revolcheck_pci ()
909829800dSFrançois Revol{
919829800dSFrançois Revol	echo "<h2>PCI devices</h2><dl>"
925dfed048SJoseph Prostko	echo "<div><i>List of detected PCI devices. This does not indicate that every probed device is supported by a driver.</i></div><br />"
939829800dSFrançois Revol	devn=0
949829800dSFrançois Revol	bus="pci"
959829800dSFrançois Revol	vendor=''
969829800dSFrançois Revol	device=''
979829800dSFrançois Revol	true;
989829800dSFrançois Revol	listdev | while read line; do
999829800dSFrançois Revol
1009829800dSFrançois Revol	case "$line" in
1019829800dSFrançois Revol	device*)
1029829800dSFrançois Revol		case "$vendor" in
1039829800dSFrançois Revol		"")
1049829800dSFrançois Revol			desc="${line/device /}"
1059829800dSFrançois Revol			echo "<dt><b>$desc</b></dt>"
1069829800dSFrançois Revol			;;
1079829800dSFrançois Revol		*)
1089829800dSFrançois Revol			devicestr=${line#*:}
1099829800dSFrançois Revol			device="${line%:*}"
1109829800dSFrançois Revol			device="${device#device }"
1119829800dSFrançois Revol			echo "<dd>"
1129829800dSFrançois Revol			echo "<div>$vendor:$device <i>$vendorstr:$devicestr</i></div>"
1139829800dSFrançois Revol			descline="$vendor:$device \"$vendorstr\" \"$devicestr\" $desc"
11418b34d36SFrançois Revol			echo "<div>Identification: <input type='text' id='$bus${devn}_desc' name='$bus${devn}_desc' value='$descline' readonly='readonly' size='80' /></div>"
1159829800dSFrançois Revol
1169829800dSFrançois Revol			echo "<div>"
11718b34d36SFrançois Revol			echo "<table border='0'>"
11818b34d36SFrançois Revol			echo "<tr><td>"
1199829800dSFrançois Revol			echo "Status: "
12018b34d36SFrançois Revol			echo "</td><td>"
1212362652aSFrançois Revol			echo "<input type='radio' name='$bus${devn}_status' id='$bus${devn}_status_ok' value='ok' /><label for='$bus${devn}_status_ok' class='status_ok'>Working</label>"
12218b34d36SFrançois Revol			echo "</td></tr><tr><td></td><td>"
12318b34d36SFrançois Revol			#echo "<br />"
1242362652aSFrançois Revol			echo "<input type='radio' name='$bus${devn}_status' id='$bus${devn}_status_ko' value='ko' /><label for='$bus${devn}_status_ko' class='status_ko'>Not working</label>"
12518b34d36SFrançois Revol			echo "</td></tr><tr><td></td><td>"
12618b34d36SFrançois Revol			#echo "<br />"
1272362652aSFrançois Revol			echo "<input type='radio' name='$bus${devn}_status' id='$bus${devn}_status_unkn' value='unkn' checked='checked' /><label for='$bus${devn}_status_unkn' class='status_unkn'>Unknown</label>"
12818b34d36SFrançois Revol			echo "</td></tr>"
12918b34d36SFrançois Revol			echo "</table>"
1309829800dSFrançois Revol			echo "</div>"
1319829800dSFrançois Revol
1329829800dSFrançois Revol			echo "<div>"
1339829800dSFrançois Revol			echo "Is it an add-in card (not part of the motherboard) ? "
1349829800dSFrançois Revol			echo "<input type='checkbox' name='$bus${devn}_addin' id='$bus${devn}_addin' /><label for='$bus${devn}_addin'>Yes</label>"
1359829800dSFrançois Revol			echo "</div>"
1369829800dSFrançois Revol
1379829800dSFrançois Revol			echo "<div>"
1389829800dSFrançois Revol			echo "Comment: "
1399829800dSFrançois Revol			echo "<input type='text' name='$bus${devn}_comment' id='$bus${devn}_comment' placeholder='bug, missing feature...' size='30' />"
1409829800dSFrançois Revol			echo "</div>"
1419829800dSFrançois Revol
1422362652aSFrançois Revol			echo "<br />"
1432362652aSFrançois Revol
1449829800dSFrançois Revol			echo "</dd>"
1459829800dSFrançois Revol
1469829800dSFrançois Revol			vendor=''
1479829800dSFrançois Revol			devn=$(($devn+1))
1489829800dSFrançois Revol			;;
1499829800dSFrançois Revol		esac
1509829800dSFrançois Revol		;;
1519829800dSFrançois Revol	vendor*)
1529829800dSFrançois Revol		vendorstr=${line#*:}
1539829800dSFrançois Revol		vendor="${line%:*}"
1549829800dSFrançois Revol		vendor="${vendor#vendor }"
1559829800dSFrançois Revol		;;
1569829800dSFrançois Revol	*)
1579829800dSFrançois Revol		;;
1589829800dSFrançois Revol	esac
1599829800dSFrançois Revol	done
1609829800dSFrançois Revol}
1619829800dSFrançois Revol
1629829800dSFrançois Revolcheck_usb ()
1639829800dSFrançois Revol{
1649829800dSFrançois Revol	echo "<h2>USB devices</h2><dl>"
1659829800dSFrançois Revol	echo "<div><i>List ot detected USB devices. This does not indicate that every probed device is supported by a driver.</i></div><br />"
1669829800dSFrançois Revol	devn=0
1679829800dSFrançois Revol	bus="usb"
1689829800dSFrançois Revol	listusb | while read vpid dev desc; do
1699829800dSFrançois Revol		echo "<dt><b>$desc</b></dt>"
1709829800dSFrançois Revol		echo "<dd>"
17118b34d36SFrançois Revol		echo "<div>Identification: <input type='text' id='$bus${devn}_desc' name='$bus${devn}_desc' value='$vpid $dev $desc' readonly='readonly' size='80' /></div>"
1729829800dSFrançois Revol		if [ "$vpid" != "0000:0000" ]; then
1739829800dSFrançois Revol			enabled=1
1749829800dSFrançois Revol			id=""
17518b34d36SFrançois Revol
1769829800dSFrançois Revol			echo "<div>"
17718b34d36SFrançois Revol			echo "<table border='0'>"
17818b34d36SFrançois Revol			echo "<tr><td>"
1799829800dSFrançois Revol			echo "Status: "
18018b34d36SFrançois Revol			echo "</td><td>"
1812362652aSFrançois Revol			echo "<input type='radio' name='$bus${devn}_status' id='$bus${devn}_status_ok' value='ok' /><label for='$bus${devn}_status_ok' class='status_ok'>Working</label>"
18218b34d36SFrançois Revol			echo "</td></tr><tr><td></td><td>"
18318b34d36SFrançois Revol			#echo "<br />"
1842362652aSFrançois Revol			echo "<input type='radio' name='$bus${devn}_status' id='$bus${devn}_status_ko' value='ko' /><label for='$bus${devn}_status_ko' class='status_ko'>Not working</label>"
18518b34d36SFrançois Revol			echo "</td></tr><tr><td></td><td>"
18618b34d36SFrançois Revol			#echo "<br />"
1872362652aSFrançois Revol			echo "<input type='radio' name='$bus${devn}_status' id='$bus${devn}_status_unkn' value='unkn' checked='checked' /><label for='$bus${devn}_status_unkn' class='status_unkn'>Unknown</label>"
18818b34d36SFrançois Revol			echo "</td></tr>"
18918b34d36SFrançois Revol			echo "</table>"
1909829800dSFrançois Revol			echo "</div>"
1919829800dSFrançois Revol
1929829800dSFrançois Revol			echo "<div>"
1939829800dSFrançois Revol			echo "Is it an external device (not part of the motherboard) ? "
1949829800dSFrançois Revol			echo "<input type='checkbox' name='$bus${devn}_addin' id='$bus${devn}_addin' name='$bus${devn}_addin' /><label for='$bus${devn}_addin'>Yes</label>"
1959829800dSFrançois Revol			echo "</div>"
1969829800dSFrançois Revol
1979829800dSFrançois Revol			echo "<div>"
1989829800dSFrançois Revol			echo "Comment: "
1999829800dSFrançois Revol			echo "<input type='text' name='$bus${devn}_comment' id='$bus${devn}_comment' placeholder='bug, missing feature...' size='30' />"
2009829800dSFrançois Revol			echo "</div>"
2019829800dSFrançois Revol		else
2022362652aSFrançois Revol			echo "<div><i>(virtual device)</i></div>"
2039829800dSFrançois Revol		fi
2042362652aSFrançois Revol
2052362652aSFrançois Revol		echo "<br />"
2069829800dSFrançois Revol		echo "</dd>"
2079829800dSFrançois Revol		devn=$(($devn+1))
2089829800dSFrançois Revol	done
2099829800dSFrançois Revol	echo "</dl>"
2109829800dSFrançois Revol}
2119829800dSFrançois Revol
21271f92c64SFrançois Revolcheck_dmidecode () {
21371f92c64SFrançois Revol	which dmidecode >/dev/null 2>&1 || return
21471f92c64SFrançois Revol
215378601a7SFrançois Revol	# make sure /dev/mem is published
216378601a7SFrançois Revol	ls -l /dev/misc/mem > /dev/null
217378601a7SFrançois Revol
21871f92c64SFrançois Revol	echo "<h2>DMIdecode output</h2>"
21971f92c64SFrançois Revol	echo "<i>The output of dmidecode gives exact vendor and device identification.</i>"
22071f92c64SFrançois Revol
22171f92c64SFrançois Revol	echo "<h3><tt>dmidecode</tt></h3>"
22271f92c64SFrançois Revol	echo "<i>(full output, stripped from the machine UUID)</i><br />"
22371f92c64SFrançois Revol	echo "<textarea style='font-family: monospace' rows='10' cols='80' name='dmidecode_output' id='dmidecode_output' readonly='readonly'>"
22471f92c64SFrançois Revol	dmidecode | grep -v 'UUID:'
22571f92c64SFrançois Revol	echo "</textarea>"
22671f92c64SFrançois Revol
22771f92c64SFrançois Revol	dmidecode_bios_vendor="$(dmidecode -s bios-vendor)"
22871f92c64SFrançois Revol	dmidecode_bios_version="$(dmidecode -s bios-version)"
22971f92c64SFrançois Revol	dmidecode_bios_release_date="$(dmidecode -s bios-release-date)"
23071f92c64SFrançois Revol	dmidecode_system_manufacturer="$(dmidecode -s system-manufacturer)"
23171f92c64SFrançois Revol	dmidecode_system_product_name="$(dmidecode -s system-product-name)"
23271f92c64SFrançois Revol	dmidecode_system_version="$(dmidecode -s system-version)"
23371f92c64SFrançois Revol}
23471f92c64SFrançois Revol
2359829800dSFrançois Revolcheck_machine ()
2369829800dSFrançois Revol{
2379829800dSFrançois Revol	echo "<h2>Machine</h2>"
23871f92c64SFrançois Revol	echo "Vendor: <input type='text' name='machine_vendor' id='machine_vendor' placeholder='Lenovo,HP,Asus...' value='$dmidecode_system_manufacturer'/>"
2399829800dSFrançois Revol	echo "<br />"
24071f92c64SFrançois Revol	echo "Model: <input type='text' name='machine_model' id='machine_model' placeholder='T510,l4500r...' value='$dmidecode_system_product_name' />"
2419829800dSFrançois Revol	echo "<br />"
2429829800dSFrançois Revol	echo "Specification page: <input type='url' name='machine_url' id='machine_url' placeholder='url of the model page on the vendor website' />"
2439829800dSFrançois Revol	echo "<br />"
2449829800dSFrançois Revol	echo "Comments: <br />"
2459829800dSFrançois Revol	echo "<textarea style='font-family: monospace' rows='10' cols='40' name='machine_comments' id='machine_comments' placeholder='specific options...'></textarea>"
2469829800dSFrançois Revol	echo "<br />"
2479829800dSFrançois Revol}
2489829800dSFrançois Revol
2499829800dSFrançois Revolcheck_haiku ()
2509829800dSFrançois Revol{
2519829800dSFrançois Revol	echo "<h2>Haiku</h2>"
2529829800dSFrançois Revol	uname_r="$(uname -r)"
2539829800dSFrançois Revol	uname_v="$(uname -v)"
2549829800dSFrançois Revol	echo "Release: <input type='text' name='uname_r' id='uname_r' value='$uname_r' readonly='readonly' size='6' />"
2559829800dSFrançois Revol	echo "<br />"
2569829800dSFrançois Revol	echo "Version: <input type='text' name='uname_v' id='uname_v' value='$uname_v' readonly='readonly' size='30' />"
2579829800dSFrançois Revol	echo "<br />"
2589829800dSFrançois Revol	echo "Comments: <br />"
2599829800dSFrançois Revol	echo "<textarea style='font-family: monospace' rows='4' cols='40' name='haiku_comments' id='haiku_comments' placeholder='Custom build, gcc4...' ></textarea>"
2609829800dSFrançois Revol	echo "<br />"
2619829800dSFrançois Revol}
2629829800dSFrançois Revol
2639829800dSFrançois Revolcheck_utils ()
2649829800dSFrançois Revol{
2659829800dSFrançois Revol	echo "<h2>Utilities output</h2>"
2669829800dSFrançois Revol	echo "<i>The output of some system utilities gives precious informations on the processor model and other stuff...</i>"
2679829800dSFrançois Revol
2689829800dSFrançois Revol	echo "<h3><tt>sysinfo</tt></h3>"
2699829800dSFrançois Revol	echo "<i>(system info)</i><br />"
2709829800dSFrançois Revol	echo "<textarea style='font-family: monospace' rows='10' cols='80' name='sysinfo_output' id='sysinfo_output' readonly='readonly'>"
2719829800dSFrançois Revol	sysinfo
2729829800dSFrançois Revol	echo "</textarea>"
2739829800dSFrançois Revol
2749829800dSFrançois Revol	echo "<h3><tt>listimage 1</tt></h3>"
2759829800dSFrançois Revol	echo "<i>(list of loaded kernel drivers)</i><br />"
2769829800dSFrançois Revol	echo "<textarea style='font-family: monospace' rows='10' cols='80' name='listimage_1_output' id='listimage_1_output' readonly='readonly'>"
2779829800dSFrançois Revol	listimage 1
2789829800dSFrançois Revol	echo "</textarea>"
2799829800dSFrançois Revol
2809829800dSFrançois Revol	echo "<h3><tt>ifconfig</tt></h3>"
2819829800dSFrançois Revol	echo "<i>(list of network interfaces)</i><br />"
2829829800dSFrançois Revol	echo "<textarea style='font-family: monospace' rows='10' cols='80' name='ifconfig_output' id='ifconfig_output' readonly='readonly'>"
2839829800dSFrançois Revol	ifconfig
2849829800dSFrançois Revol	echo "</textarea>"
2859829800dSFrançois Revol
286*8e8f7748SFrançois Revol	echo "<h3><tt>pkgman list-repos</tt></h3>"
287*8e8f7748SFrançois Revol	echo "<i>(list of configured package repositories)</i><br />"
288*8e8f7748SFrançois Revol	echo "<textarea style='font-family: monospace' rows='10' cols='80' name='pkgman_list_repos_output' id='pkgman_list_repos_output' readonly='readonly'>"
289*8e8f7748SFrançois Revol	pkgman list-repos
290*8e8f7748SFrançois Revol	echo "</textarea>"
291*8e8f7748SFrançois Revol
292*8e8f7748SFrançois Revol	echo "<h3><tt>pkgman search -a</tt></h3>"
2939829800dSFrançois Revol	echo "<i>(list of installed packaged)</i><br />"
294*8e8f7748SFrançois Revol	echo "<textarea style='font-family: monospace' rows='10' cols='80' name='pkgman_search_a_output' id='pkgman_search_a_output' readonly='readonly'>"
295*8e8f7748SFrançois Revol	pkgman search -a
2969829800dSFrançois Revol	echo "</textarea>"
2979829800dSFrançois Revol
2989829800dSFrançois Revol	echo "<br />"
2999829800dSFrançois Revol}
3009829800dSFrançois Revol
3019829800dSFrançois Revolcheck_syslog ()
3029829800dSFrançois Revol{
3039829800dSFrançois Revol	echo "<h2>System log</h2>"
3049829800dSFrançois Revol	echo "<div><i>Part of the system boot log that could help developer understand why some devices are not recognized...</i></div>"
3059829800dSFrançois Revol	echo "<textarea style='font-family: monospace' rows='10' cols='80' name='syslog' id='syslog' readonly='readonly'>"
3069829800dSFrançois Revol	cat /var/log/syslog
3079829800dSFrançois Revol	echo "</textarea>"
3089829800dSFrançois Revol
3099829800dSFrançois Revol}
3109829800dSFrançois Revol
3119829800dSFrançois Revolcheck_sender ()
3129829800dSFrançois Revol{
3139829800dSFrançois Revol	echo "<h2>Sender info (optional)</h2>"
3149829800dSFrançois Revol	echo "Name: <input type='text' name='sender_name' id='sender_name' placeholder='Your name' />"
3159829800dSFrançois Revol	echo "<br />"
3169829800dSFrançois Revol	echo "Mail: <input type='email' name='sender_name' id='sender_name' placeholder='contact email' />"
3179829800dSFrançois Revol	echo "<br />"
3189829800dSFrançois Revol	echo "Other comments: <br />"
3199829800dSFrançois Revol	echo "<textarea style='font-family: monospace' rows='4' cols='40' name='sender_comments' id='sender_comments' placeholder='IRC nickname on freenode...' ></textarea>"
3209829800dSFrançois Revol	echo "<br />"
3219829800dSFrançois Revol}
3229829800dSFrançois Revol
3239829800dSFrançois Revolcheck_all ()
3249829800dSFrançois Revol{
3259829800dSFrançois Revol	echo "<html>"
3262362652aSFrançois Revol	echo "<head>"
32718b34d36SFrançois Revol	echo '<meta http-equiv="content-type" content="text/html; charset=utf-8">'
3282362652aSFrançois Revol	echo "<title>Hardware report</title>"
32918b34d36SFrançois Revol	#echo '<link rel="stylesheet" type="text/css" href="http://svn.haiku-os.org/haiku/haiku/trunk/docs/welcome/Haiku-doc.css">'
33018b34d36SFrançois Revol
3312362652aSFrançois Revol	echo "<style type='text/css'>"
3322362652aSFrançois Revol	echo ".status_ok { color: #008000 }"
3332362652aSFrançois Revol	echo ".status_ko { color: #800000 }"
3342362652aSFrançois Revol	echo ".status_unkn { color: #000080 }"
3352362652aSFrançois Revol	echo "</style>"
3362362652aSFrançois Revol	echo "</head>"
3379829800dSFrançois Revol	echo "<body>"
33818b34d36SFrançois Revol	echo "<div id='content'>"
3399829800dSFrançois Revol	echo "<form method='POST' action='$report_cgi'>"
3409829800dSFrançois Revol
34193b9886aSFrançois Revol	do_notify 0.1 "Checking for PCI hardware..."
3429829800dSFrançois Revol	check_pci
34393b9886aSFrançois Revol
34471f92c64SFrançois Revol	do_notify 0.2 "Checking for USB hardware..."
3459829800dSFrançois Revol	check_usb
34693b9886aSFrançois Revol
34771f92c64SFrançois Revol	do_notify 0.3 "Checking for utility outputs..."
3489829800dSFrançois Revol	check_utils
34993b9886aSFrançois Revol
35071f92c64SFrançois Revol	do_notify 0.7 "Dumping syslog output..."
3519829800dSFrançois Revol	check_syslog
3526f6d1e36SFrançois Revol
35371f92c64SFrançois Revol	do_notify 0.8 "Checking machine infos..."
35471f92c64SFrançois Revol	check_dmidecode
3556f6d1e36SFrançois Revol	check_machine
35671f92c64SFrançois Revol
35771f92c64SFrançois Revol	do_notify 0.9 "Checking for Haiku version..."
35871f92c64SFrançois Revol	check_haiku
35971f92c64SFrançois Revol
3609829800dSFrançois Revol	check_sender
3619829800dSFrançois Revol
3626c278c3bSFrançois Revol	do_notify 1.0 "Done!" --timeout 3
36393b9886aSFrançois Revol
3649829800dSFrançois Revol	echo "<div><i>Note: this form will only send data that is visible on this page.</i></div>"
3659829800dSFrançois Revol
3669829800dSFrançois Revol	echo "<input type='submit' name='submit' value='submit'>"
3679829800dSFrançois Revol
3689829800dSFrançois Revol	echo "</form>"
36918b34d36SFrançois Revol	echo "</div>"
3709829800dSFrançois Revol	echo "</body>"
3719829800dSFrançois Revol	echo "</html>"
3729829800dSFrançois Revol}
3739829800dSFrançois Revol
3749829800dSFrançois Revoltf=/tmp/hw_checker_$$.html
3759829800dSFrançois Revol
376*8e8f7748SFrançois Revoldo_notify 0.0 "Checking for needed packages..."
377*8e8f7748SFrançois Revoltry_install_packages
378*8e8f7748SFrançois Revol
379894526b5SFrançois Revoldo_notify 0.0 "Checking for network..."
380894526b5SFrançois Revoldetect_network
381894526b5SFrançois Revol
3829829800dSFrançois Revolcheck_all > "$tf"
3839829800dSFrançois Revol
3849829800dSFrançois Revolopen "$tf"
3859829800dSFrançois Revol
386