Lees weergave
Top Stories: Apple Smart Home Launch on October 13, iPhone Duo Production Issues, and More
October 13 looks to be the date for an introduction of Apple's revamped smart home portfolio, including the home hub device we've been hearing about for ages. This week also saw word that Apple's supply chain is struggling to meet production yield goals for the iPhone Duo ahead of its launch, while iPhone 18 Pro owners are now getting a chance to put the devices through their paces, so read on below for all of the details!
Top Stories
Three New Apple Smart Home Products Coming on October 13
A couple of those leaked products above could be arriving very shortly, as Bloomberg's Mark Gurman says Apple will be introducing a trio of new smart home products on Tuesday, October 13.
Apple will reportedly debut its long-rumored smart home hub product, as well as the new HomePod mini and Apple TV models, and while he didn't specify how Apple will introduce them, signs are pointing to some sort of event.
Apple retail stores have reportedly also received confidential boxes that are marked "Do Not Open Until October 8" and which are likely to contain merchandising materials. It's unclear, however, if they are for the upcoming iPhone Duo launch or something related to the smart home product introduction.
Apple Smart Home Hub to Feature iMac G4-Style Design
Apple's long-rumored smart home hub will have an iMac G4-style design and a host of unique features, Bloomberg's Mark Gurman reports.
The smart home hub is said to feature a square 6-inch display, with variants that can be placed on a countertop or mounted on a wall. It features a single FaceTime camera on the front, with microphones and speakers in its connected base.
Leaks suggest the hub may be available in Silver, Space Gray, Starlight, and Rose Pink colors, and will be able to display user-customizable Photo Faces pulled from your photos library, memories, and shared albums, a feature that appears similar to what will be available for StandBy mode on the iPhone Duo.
iPhone Duo Reportedly Facing Production Problems Ahead of Launch
The iPhone Duo is reportedly facing production difficulties ahead of its October launch, with early output expected to be limited.
A person said to be close to Foxconn's supply chain told China's Jiemian News that final assembly yields for Apple's first foldable iPhone were only slightly above 60% as of September 17. The source said that, under Apple's current quality standards, it could take another six months to a year for the assembly line to reach a mature yield.
According to the source, Foxconn is repeatedly adjusting equipment, assembly processes, and production settings as it makes the iPhone Duo at scale. The source also said suppliers were waiting to see whether Apple would ease any quality requirements to accelerate production.
iPhone 18 Pro First Impressions: What Do You Think So Far?
It's been almost two weeks since the iPhone 18 Pro models launched, and we want to hear from MacRumors readers. What do you think of Apple's newest iPhones? If you upgraded from an older phone, was it worth it? What about upgrading from an iPhone 17 Pro? What problems are you running into? Anything you love so far?
MacRumors readers have already been sharing early opinions on the MacRumors forums, and there are interesting discussion threads to read through. For early reviews and hands-on images, make sure to check out the first impressions and photos thread.
Not everything has been perfect, however, as some users have been experiencing issues such as speaker crackling or popping while some iPhone 18 Pro Max users on AT&T in the U.S. have been having issues with cellular connectivity or eSIM provisioning.
Apple Planning to Launch Products Faster and More Often
John Ternus is marking one month as Apple CEO, and he is apparently undertaking efforts to restructure the company to accelerate product development and introduce new products more frequently, according to Bloomberg's Mark Gurman.
Ternus apparently wants Apple to "broaden its range of devices and create a leaner organization with a greater focus on engineering." One proposal under consideration is to rely less on Apple's traditional spring and fall product release cycles, and introduce new devices more quickly and throughout the year. Ternus has also purportedly indicated that Apple must become "more experimental" to remain competitive in the era of artificial intelligence.
MacRumors Newsletter
Each week, we publish an email newsletter like this highlighting the top Apple stories, making it a great way to get a bite-sized recap of the week hitting all of the major topics we've covered and tying together related stories for a big-picture view.
So if you want to have top stories like the above recap delivered to your email inbox each week, subscribe to our newsletter!
This article, "Top Stories: Apple Smart Home Launch on October 13, iPhone Duo Production Issues, and More" first appeared on MacRumors.com
Discuss this article in our forums
Vincent Bernat: Self-hosted HTTP tunnels with SSH and nginx
A friend wants to proofread your work-in-progress blog post, but its preview
only runs on localhost:8080. Several tools can help. Some run as a
commercial service, like ngrok or Cloudflare Quick Tunnels. Some are
self-hostable but require a specific client, like frp or localtunnel.
Some only require a plain SSH client but rely on a specific SSH server, like
sish. Letβs implement a self-hosted solution with only OpenSSH and
nginx!
$ ssh -R 0:localhost:8080 http-over-ssh
Allocated port 41535 for remote forward to localhost:8080
https://6J3jK1WmB15c6WmjW_X-Wg--1789928654@p41535.ssh.luffy.cx/
Basic setup
First, we forward connections from a port on a remote server to your local service:
$ ssh -N -R 0:localhost:8080 web02.luffy.cx
Allocated port 41535 for remote forward to localhost:8080
When you specify 0 as the remote port, the server allocates a free port.
Then, we configure nginx to proxy requests from https://p41535.ssh.luffy.cx to
http://127.0.0.1:41535:
server {
listen 0.0.0.0:443 ssl ;
listen [::0]:443 ssl ;
server_name ~^p(?<port>\d\d\d\d\d)\.ssh\.luffy\.cx$;
location / {
proxy_pass http://127.0.0.1:$port;
}
}
We also need to add DNS records for *.ssh.luffy.cx and get a wildcard
certificate through Letβs Encrypt:
*.ssh.luffy.cx. CNAME web02.luffy.cx.
ssh.luffy.cx. CAA 0 issuewild "letsencrypt.org"
_acme-challenge.ssh.luffy.cx CNAME ssh.luffy.cx.acme.luffy.cx.
acme.luffy.cx is a zone hosted on Routeβ―53. I use it for ACME DNS-01
challenges, both for wildcard certificates and for domains served by
several web servers. In my case, NixOS gets the certificates
automatically.
Access control
The port is the only βsecretβ1 keeping the content confidential. Other forwarding solutions add a random string to the domain name to prevent an intruder from enumerating the possible values.
Thanks to ngx_http_secure_link_module, we can secure
this setup a bit. This module computes a hash2 over a set of values,
including a secret, and compares it with the hash from the request. The hash is
base64-encoded, so we cannot put it in the domain name, which is
case-insensitive. Instead, we put it in the URL as a username, along with its
expiration timestamp:3
https://6J3jK1WmB15c6WmjW_X-Wg--1789928654@p41535.ssh.luffy.cx/en/blog
β°ββββββββββ¬βββββββββββ― β°ββββ¬βββββ― β°ββ¬ββ― β°βββ¬ββββ―
hash expires port path
The client sends the username to the server with HTTP basic
authentication. This works with most HTTP clients, including curl.
Nginx exposes the username in the $remote_user variable. The module expects
the hash and the expiration timestamp separated by a comma. We use a map
directive to extract the two parts from $remote_user and join them with a
comma.4 We also give the module the string to hash. It contains the
expiration timestamp, the port, and a secret:
map $remote_user $httpssh_link {
"~^([-_A-Za-z0-9]{22})--([0-9]+)$" "$1,$2";
}
server {
# [β¦]
location / {
secure_link $httpssh_link;
secure_link_md5 "$secure_link_expires $port ZuPerS3cr3!";
}
}
The module returns the status of the check in the $secure_link variable:
- empty if the hashes do not match,
"0"if they match but the link has expired, or"1"otherwise.
If the hash is incorrect or missing, we return a 401 error with a
WWW-Authenticate header to ask for credentials. If the link has expired, we
return a 410 error. We remove the Authorization header before forwarding the
request and add a few directives to proxy WebSocket connections.
Here is the complete configuration:5
map $remote_user $httpssh_link {
"~^([-_A-Za-z0-9]{22})--([0-9]+)$" "$1,$2";
}
server {
listen 0.0.0.0:443 ssl ;
listen [::0]:443 ssl ;
server_name ~^p(?<port>\d\d\d\d\d)\.ssh\.luffy\.cx$;
location / {
secure_link $httpssh_link;
secure_link_md5 "$secure_link_expires $port ZuPerS3cr3!";
if ($secure_link = "") {
add_header WWW-Authenticate 'Basic realm="tunnel"' always;
return 401;
}
if ($secure_link = "0") {
return 410;
}
proxy_pass http://127.0.0.1:$port;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Authorization "";
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_buffering off;
proxy_read_timeout 30m;
}
}
I think you are now asking yourself the obvious question: βHow should I generate the hash?β Easy peasy!
$ expires=$(( $(date +%s) + 86400 ))
$ port=41535
$ secret='ZuPerS3cr3!'
$ printf '%s %s %s' "$expires" "$port" "$secret" \
> | openssl md5 -binary \
> | openssl base64 \
> | tr +/ -_ | tr -d =
6J3jK1WmB15c6WmjW_X-Wg
Well, I suppose you are now saying: βVincent, this is not very convenient! Iβll stick with ngrok if you donβt mind.β Okay, I hear you. Letβs write a helper script.
Helper script
The main difficulty is finding the ephemeral port that OpenSSH allocates, as it
does not appear in any environment variable.6 To work around this obstacle,
we look for the ancestor sshd-session processes:7
pids=$(
pid=$$
while [ "$pid" -gt 1 ]; do
line=$(ps -o comm=,pid=,ppid= -p "$pid")
echo "$line"
pid=${line##* }
done | awk '$1 == "sshd-session" { printf "pid=%s,\n", $2 }'
)
if [ -z "$pids" ]; then
echo "not an ssh session" >&2
exit 1
fi
Then, we get the listening ports associated with these sshd-session
processes:8
ports=$(sudo -n ss --listening --numeric --tcp --processes --no-header \
| grep -F "$pids" \
| awk '{ print $4 }' | awk -F: '{ print $NF }' \
| sort -un)
if [ -z "$ports" ]; then
echo "no forwarded port, use ssh -R 0:localhost:PORT" >&2
exit 1
fi
Finally, we display the URLs and keep the session open:
lifetime=86400
secret='ZuPerS3cr3!'
expires=$(( $(date +%s) + lifetime ))
for port in $ports; do
token=$(printf '%s %s %s' "$expires" "$port" "$secret" \
| openssl md5 -binary \
| openssl base64 \
| tr +/ -_ | tr -d =)
echo "https://$token--$expires@p$port.ssh.luffy.cx/"
done
sleep infinity
I install this script as http-over-ssh on the server and add this entry to my
~/.ssh/config:
Host http-over-ssh
Hostname web02.luffy.cx
RemoteCommand http-over-ssh
ControlPath none
With this solution, I only rely on OpenSSH and nginx, two pieces of software
already running on this server. One short command gives me a self-hosted tunnel
and a URL to share. To try it, grab the complete helper script, which
includes a few minor improvements. If you run NixOS, as any person of taste
would, have a look at my http-over-ssh.nix instead. βοΈ
Update (2026-10)
This post was widely discussed on Hacker News.
Update (2026-10)
I have since switched to Caddy, which does not include a
module to check the validity of a URL. Instead, Caddy queries a local HTTP
service written in Go through the forward_auth directive. As a bonus,
this lets me put the token in the domain name.
-
Since the kernel allocates it from the local port range, its entropy is low. Moreover, on Linux, we lose one more bit because the kernel favors odd ports when it picks a random free port.
$ sysctl -n net.ipv4.ip_local_port_range \ > | awk '{print $1"β"$2" β "log($2-$1+1)/log(2)" bits"}' 32768β60999 β 14.785 bits -
The module relies on MD5. Its security is weak but good enough for this use.Β β©
-
We need an expiration date because a later session could reuse the port, and we have no way to detect this case.Β β©
-
The username could use a comma directly instead of a double dash. But some applications do not recognize the URL correctly, making it harder to share.Β β©
-
This configuration exposes any TCP port listening on
127.0.0.1or0.0.0.0to anyone with the secret, bypassing most firewall rules. You could strengthen it by limiting theserver_nameregex to the ephemeral port range.Β β© -
One SSH session can contain several tunnels, and the client can add or remove them at any time. This is unlike tun device forwarding (
ssh -w), which gets its ownSSH_TUNNELenvironment variable.Β β© -
Since OpenSSHβ―9.8,
sshd-sessionis the name of the helper handling the session. With older versions, look forsshdinstead.Β β© -
We need
sudobecause thesshd-sessionprocess dropped its privileges. The kernel then marks it as not dumpable, and its/proc/PID/fddirectory belongs to root. Without access to this directory,sscannot find which process owns a socket.Β β©
Apple Says iPhone 18 Pro Max Users With AT&T Cellular Issue Need to Have Device Replaced
Apple said it released iOS 27.0.1 earlier this week and an AT&T carrier settings update earlier today to help prevent more iPhone 18 Pro Max users from being impacted by this issue going forward. In a statement shared with MacRumors, Apple strongly encouraged all iPhone 18 Pro Max users to update to iOS 27.0.1 now. To install the update, open the Settings app on your iPhone and tap on General β Software Update.
The carrier settings update for the iPhone 18 Pro Max will automatically download for AT&T users over the next 14 days, according to Apple. To manually trigger the update, users can open the Settings app and tap on General β About.
Apple's full statement:
We have identified an issue affecting a small number of iPhone 18 Pro Max users on the AT&T network that may cause a device to lose service and be unable to make calls. We released iOS 27.0.1 earlier this week and strongly encourage all iPhone 18 Pro Max users to update now, and are also issuing a carrier settings update today. These updates together are meant to help prevent this issue from occurring.Notably, Apple said that iPhone 18 Pro Max devices that have been affected by this cellular issue on the AT&T network cannot have service reactivated with a software update. Instead, Apple said the device must be replaced entirely, and it advises affected customers to contact Apple Support or AT&T, or visit an Apple Store or AT&T location.
Apple said it has only observed this issue with iPhone 18 Pro Max users on the AT&T network. No other iPhone models or carriers are known to be impacted.
Apple did not disclose the underlying cause of the issue. U.S. models of the iPhone 18 Pro Max rely on Qualcomm's Snapdragon X80 modem for cellular connectivity, while variants of the device sold in all other countries are equipped with Apple's custom C2 modem. It is unclear if this modem difference is a factor in this AT&T issue.
It is also unclear if there will eventually be an Apple Service Program dedicated to this issue. In the meantime, it sounds like Apple Stores will replace affected iPhone 18 Pro Max devices for free, so book an appointment with the Genius Bar if necessary.
This article, "Apple Says iPhone 18 Pro Max Users With AT&T Cellular Issue Need to Have Device Replaced" first appeared on MacRumors.com
Discuss this article in our forums